Laravel中的关系0 ... 1

时间:2018-12-09 19:36:05

标签: php sql laravel

我有2个模型:产品和类别,其中每个产品属于一个类别(或不属于

然后我在产品表中放置了一个“ category_id”。但是category_id可以为null。

在Laravel中:

Schema::create('products', function (Blueprint $table) {
    $table->unsignedInteger('category_id')->default(0);
    $table->foreign('category_id')->references('id')->on('categories');

但是当我需要将类别更改为NULL(0)时,会出现错误:

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails 

我该如何解决?

最诚挚的问候

1 个答案:

答案 0 :(得分:1)

删除welcome()约束。

您无法使用默认值default,因为默认值未在您的类别表中显示为ID。因此,没有父母就不能有孩子。

重写

0

$table->unsignedInteger('category_id')->default(0);

注意::请确保在迁移子表之前始终先迁移父表。就您而言,在运行$table->unsignedInteger('category_id')->nullable();

时,请在categories之前迁移product