【问题标题】:Set a foreign key to nullable in laravel在laravel中将外键设置为可为空
【发布时间】:2021-12-02 06:31:06
【问题描述】:

假设我有一个表 userspersonspersons 中的条目可以有或没有用户 ID。所以一个人可以有一个用户,但这是可选的。

这意味着persons 中的外键需要可以为空。

这是我的数据库迁移:

$table->bigInteger('user_id')->nulleable()->unsigned();
$table->foreign('user_id')->nulleable()->references('id')->on('users');

可悲的是,当我检查它说的数据库列时,该字段不可为空

+------------+-----------------+------+-----+---------+----------------+
| Field      | Type            | Null | Key | Default | Extra          |
+------------+-----------------+------+-----+---------+----------------+
| user_id    | bigint unsigned | NO   | MUL | NULL    |                |
+------------+-----------------+------+-----+---------+----------------+

如何将外键设置为可为空?我尝试了在网上找到的各种组合,但没有任何效果。

非常感谢您。

【问题讨论】:

  • 使用$table->foreignId('user_id')->nullable()->constrained(); 而不是你的两行。

标签: mysql laravel foreign-keys laravel-8


【解决方案1】:

您不必重复可空(不可空)到第二行, 试试这个:

$table->unsignedBigInteger('user_id')->nullable();
$table->foreign('user_id')->references('id')->on('users');

【讨论】:

    猜你喜欢
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2019-11-07
    • 2019-02-15
    相关资源
    最近更新 更多