[英]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.