首页 > 解决方案 > 如何使用带默认值的foreignId-constrained?

问题描述

刚才我从视频教程中注意到 Laravel 有这个foreignId- constrained. 所以我尝试将我的代码从method.1更改为method.2,表已迁移但是当我尝试时db:seed,默认值不起作用(它在下面返回错误)。

(方法一)

$table->unsignedBigInteger('status_id')->default(1);

$table->foreign('status_id')
    ->references('id')
    ->on('user_statuses');

(方法2)

$table->foreignId('status_id')->constrained('user_statuses')->default(1);

(使用method.2返回的错误)

SQLSTATE[HY000]:一般错误:1364 字段“status_id”没有默认值(SQL:插入usersusernamepassword)值(管理员、$2y$10$S ZUIglBQG/HhS/18zn41GOcH8f.hZaNewmyoGJBfDQchfC6OWdx26))

标签: phplaravellaravel-migrations

解决方案


根据文档,您以错误的顺序调用方法:

必须在constrained方法之前调用任何其他列修饰符

$table->foreignId('status_id')->default(1)->constrained('user_statuses');

推荐阅读