簡體   English   中英

Laravel雄辯的刪除關系表

[英]Laravel Eloquent delete relation table

如何在laravel 4.2上刪除關系表的關系? 例如,我有一個名為category的表,該表與子類別相關。 因此,類別ID與作為外鍵的子類別相關,並在我的遷移中映射為級聯刪除。 現在,子類別表與對象表具有關系。 因此,子類別ID與作為外鍵的對象相關,並在刪除時映射為級聯。 現在,當我刪除類別時,子類別將被刪除,這很好。 但是由於子類別將被刪除,所以即使對象也應該被刪除嗎? 但事實並非如此。 如何解決呢? 下面是我的代碼。

分類模型

 use Illuminate\Database\Eloquent\SoftDeletingTrait;

class Category extends Eloquent{

use SoftDeletingTrait;

protected $dates = ['deleted_at'];

protected $table = "categories";

public function subcategory(){
    return $this->hasMany('Subcategory', 'category_id');
}

public static function boot()
{
    parent::boot();

    Category::deleting(function($category) {
        $category->subcategory()->delete();
    });
}
}

子類別模型

use Illuminate\Database\Eloquent\SoftDeletingTrait;

class Subcategory extends Eloquent{

use SoftDeletingTrait;

protected $dates = ['deleted_at'];

public $timestamps = false;

protected $table = "subcategories";

public function parent(){
    return $this->belongsTo('Category', 'category_id');
}

public function objects(){
    return $this->hasMany('Object', 'subcategory_id');
}

public static function boot()
{
    parent::boot();

    Subcategory::deleting(function($subcategory) {
        $subcategory->objects()->delete();
    });

}
}

您需要直接在每個模型上調用->delete()來觸發關聯的模型事件

Category::deleting(function($category) {
    foreach($category->subcategory as $subcategory){
        $subcategory->delete(); 
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM