删除具有关系和子关系的行,包括图像laravel 4.2

时间:2017-09-26 21:37:01

标签: php laravel eloquent models relationships

我有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?
    });
}

1 个答案:

答案 0 :(得分:0)

您可以更新数据库的外键以在级联上删除。

  

$表 - >外国(' ITEM_ID') - >引用(' ID') - >在('项目') - > onDelete('级联&#39);

这样你只需要删除父模型。