Laravel MySQL 无法插入 null 值到可空外键

3

我正在为这个错误/漏洞而疯狂。我正在使用 Laravel 4.2 开发一个应用程序,其中我创建了一个表格,如下所示:

Schema::create('stock_items', function(Blueprint $table){
  ....
  $table->integer('color_id')->unsigned()->nullable();
  $table->integer('size_id')->unsigned()->nullable();
  ....
  $table->foreign('color_id')->references('id')->on('colors');
  $table->foreign('size_id')->references('id')->on('sizes');
});

两列都可以为null,但是当我插入类似下面这样的内容时:

$stock_item->color_id = NULL;
$stock_item->size_id = NULL;

我收到一个 MySQL 错误提示:无法插入:无法添加或更新子行:违反外键约束条件

但是,如果我在任何 MySQL 客户端中运行完全相同的查询,该行将被插入。那么,到底是怎么回事呢?
1个回答

0

如果使用mySQL客户端一切正常,您应该能够看到您的SQL语句与Laravel的区别。

$queries = DB::getQueryLog();
$last_query = end($queries);

检查 Laravel 执行了什么。


查询未添加到查询日志中。我猜是因为它失败了。但是它发送了这个消息:(SQL: insert into `model_items_stock` (`model_item_id`, `color_option_id`, `size_option_id`, `updated_at`, `created_at`) values (1, NULL, NULL, 2015-06-11 21:03:23, 2015-06-11 21:03:23)) 我运行了它,它可以正常工作。 - Javier Enríquez
你是否隔离了你的代码?也许在这个查询之后还有另一个有问题的查询。 - Positivity
事实并非如此,事实上,那是该函数运行的唯一查询。 - Javier Enríquez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接