当前位置: 首页 > 知识库问答 >
问题:

Laravel:使用主索引作为外键?

左丘昊天
2023-03-14

我在modeluser和modelprofilePresi之间有一个hasOne关系。这意味着每个用户都有0或1个总统设置。因此,profilePresi表的主索引与外键相同。

这就是我想要添加外键的方式:

Schema::create('profilePresi', function (Blueprint $table) {
          $table->integer('idMember');
          $table->primary('idMember');
          $table->string('idCountry',2);
          $table->timestamps();
});

Schema::table('profilePresi', function($table) {
          $table->foreign('idMember')
                ->references('id')->on('users')
                ->onDelete('cascade');
});

但是我得到以下错误:

我怎么才能修好它?我使用InnoDB引擎,所以我知道我可以设置索引键为外键。

共有2个答案

汝吕恭
2023-03-14

您的users.id列可能是一个无符号整数,但profilePresi.idMember只是一个整数。要用作外键,它们都需要无符号或无符号。检查情况是否如此,如果是这样,只需将profilePresi.idMember也设为未签名-这样就可以了。:)

壤驷旭
2023-03-14

而不是使用

$table-

使用

表-

 类似资料:
  • 我创建了一个带有主键(UsersID、AccountsID)的帐户/用户表,如下所示。我是否应该为Users表添加索引?

  • 问题内容: 如何使用复合主键作为外键?看来我的尝试无效。 问题答案: 该行: 是错的。您不能那样使用,这只是父表中PK约束的名称。要将复合主键用作外键,您必须向子表中添加相同数量(组成PK)的相同数据类型的列,然后在定义中使用这些列的组合:

  • 如何将复合主键用作外键?看来我的尝试没有成功。

  • Keys 应该是稳定,可预测,并且唯一的. 这样React才能正确追踪到某一个元素. 坏实践 在下面这段代码中,每个元素的key事实上是它在todos这个数组里面的顺序, 而事实上更好的实践应该是把key和我们想要表达的数据紧紧关联在一起. 下面这种做法会阻碍React对于我们组件的优化. {todos.map((todo, index) => <Todo {...todo}

  • 本文向大家介绍主键、外键和索引的区别?相关面试题,主要包含被问及主键、外键和索引的区别?时的应答技巧和注意事项,需要的朋友参考一下 主键、外键和索引的区别 定义: 主键–唯一标识一条记录,不能有重复的,不允许为空 外键–表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引–该字段没有重复值,但可以有一个空值 作用: 主键–用来保证数据完整性 外键–用来和其他表建立联系用的 索引–是提高查

  • iam在一个非常简单的表上解决一些性能问题,当使用其主键(bigint)获取数据时,这个表似乎很慢 我有这个包含 1.24 亿个条目的表: 以及一个简单的查询,它使用IN子句从另一个表中获取一些id,以从节点表中获取数据,但从这个表中获取几行只需要1小时。EXPLAIN向我展示了它不使用PRIMARY键作为索引,它只是扫描整个表。为什么?另一个表中的id和id列都来自bigint(20)类型。 查