如何在Laravel中使用可空函数?

vsaztqbk  于 2022-12-30  发布在  其他
关注(0)|答案(4)|浏览(129)

我在laravel 5.6中创建迁移。
我需要添加用户信息,如果用户登录了我的网站,否则添加列0
我的代码是:

$table->integer('user_id')->default(0);
$table->foreign('user_id')->references('id')->on('users');

但运行migrate后显示此错误:

SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint

我需要添加默认的0null列或添加user_id列,如果用户登录了我的网站。
这个问题怎么出?

v7pvogib

v7pvogib1#

您需要将其设置为unsignednullable。另外,将创建列和添加外键逻辑分开是一个好主意,以避免类似的错误:

Schema::create('table_name', function (Blueprint $table) {
    $table->unsignedInteger('user_id')->nullable();
});

Schema::table('table_name', function (Blueprint $table) {
    $table->foreign('user_id')->references('id')->on('users');
});
j7dteeu8

j7dteeu82#

用户表中user_idid的数据类型将不同。

$table->integer('user_id')->unsigned()->nullable();

increments()中使用创建的主键将是无符号整数

ctehm74n

ctehm74n3#

使用此简短方法

$table->foreignId('user_id')
                ->constrained()
                ->onUpdate('cascade')
                ->onDelete('cascade');

Laravel很聪明,知道您正在引用users表

jm81lzqq

jm81lzqq4#

$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

试试这个

相关问题