我有3张桌子
Client
-----------
|id|client|
-----------
|1 |client|
-----------
Items
---------------------
|id|client_id|item |
---------------------
|1 | 1 |item 1|
---------------------
|2 | 1 |item 2|
---------------------
Images
----------------------
|id|item_id| image |
----------------------
|1 | 1 |image.jpg|
----------------------
|2 | 1 |image.jpg|
----------------------
|3 | 2 |image.jpg|
----------------------
|4 | 2 |image.jpg|
----------------------
如您所见,表client
可以包含多个items
,表items
可以有多个images
。如果要删除client
,则应删除items
images
items
个。{/ p>
我试图做这样的事情,但没有结果。
$client->items()->images()->delete();
我还尝试进行完整调用,但只删除客户端,例如
$client->with(array('items' => function($items){
$items->with('images');
}))->delete()
有没有办法在单个交易中删除客户端,该客户端的项目以及这些项目的图像?
在adition中我读过关于Model events
但是说实话我不理解它,我读到我可以使用下一个代码,我用什么模型呢?我应该在deleting
函数
protected static function boot() {
parent::boot();
static::deleting(function() {
//what go in here?
});
}
答案 0 :(得分:0)
您可以更新数据库的外键以在级联上删除。
$表 - >外国(' ITEM_ID') - >引用(' ID') - >在('项目') - > onDelete('级联&#39);
这样你只需要删除父模型。