刪除一條資料庫記錄的時候希望能自動刪除這條記錄關聯的其它資料,如刪除使用者後連帶刪除其建立的文章和圖片。
1、可以用Eloquent的deleting事件來實現:
class WheelActivity extends Model
{
public function awards() {
return $this->hasMany('App\Model\WheelAward', 'wheel_activity_id', 'id');
}
protected static function boot()
{
parent::boot();
static::deleting(function($wheelactivity){
$wheelactivity->awards()->delete();
});
}
**注:** 在控制器中刪除時必須使用first()查詢,否則無效。
example:WheelActivity::where('id', $id)->first()->delete();
}
2、在控制其中直接刪除
$user = User::find($id);
$user->photos()->delete(); // 刪除關聯表的資料
$user->delete(); // 刪除主表資料
3、在AppServiceProvider 監聽模型事件(不建議)
public function boot()
{
WheelActivity::deleting(function($wheelactivity){
$wheelactivity->awards()->delete();
});
}
4、使用事物(自己腦補吧,這裡不做具體說明)。
部落格地址:http://blog.jstm365.com
本作品採用《CC 協議》,轉載必須註明作者和本文連結