Laravel 5删除一对多关系
我有两张桌子: -产品 -主题 产品属于一个主题——主题有很多产品 我想删除一个主题并删除它与任何产品的关联。在完美世界中,删除主题会将相关产品的主题id重置为空。在我的产品表中,我尝试了->onDelete('cascade'),但这会同时删除主题和相应的产品。如果我没有实现->onDelete('cascade'),我会得到以下错误: QLSTATE[23000]:完整性约束冲突:1452无法添加或更新子行:外键约束失败(Laravel 5删除一对多关系,laravel,relationship,one-to-many,sql-delete,cascade,Laravel,Relationship,One To Many,Sql Delete,Cascade,我有两张桌子: -产品 -主题 产品属于一个主题——主题有很多产品 我想删除一个主题并删除它与任何产品的关联。在完美世界中,删除主题会将相关产品的主题id重置为空。在我的产品表中,我尝试了->onDelete('cascade'),但这会同时删除主题和相应的产品。如果我没有实现->onDelete('cascade'),我会得到以下错误: QLSTATE[23000]:完整性约束冲突:1452无法添加或更新子行:外键约束失败(acmeproducts,约束products\u-theme\u-i
acme
products
,约束products\u-theme\u-id\u-foreign
外键(theme\u-id
)引用themes
(id
)关于删除级联)(SQL:updateproducts
settheme\u id
=,update\u于
=2015-12-28 20:20:05,其中id
=1)
任何建议都会非常有用。谢谢!您必须将产品外键onDelete定义为null,并将外键字段定义为null
Schema::create('products', function(Blueprint $t) {
...
$t->integer('theme_id')->unsigned()->nullable();
...
$t->foreign('theme_id')->references('id')->on('themes')
->onDelete('set null');
});