問題來源
在項目中,我們經常需要在刪除一個表中數據的時候,和它相關聯的表也要有相應的操作(刪除或修改),Laravel 提供了非常便捷的操作方法
解決方法
現在假設我們在做一個博客系統,那么就會有文章表、用戶表,並且這兩個表是相關聯的,如果我們需要在刪除用戶的時候,同時刪除文章中的對應數據,那么在 Laravel 中:
// User Model
class User extends Eloquent
{
// 與用戶表關聯的文章表
public function posts()
{
return $this->hasMany('Post');
}
protected static function boot()
{
parent::boot();
// 在刪除用戶時執行
static::deleting(function($user) {
// 刪除與用戶關聯的文章
$user->posts()->delete();
});
}
}
這樣,我們在刪除用戶的時候,與之對應的文章也會被刪除,方便操作了許多。
當然,我認為這個也可以擴展,我們可以在模型中關聯自身對應的數據表,即在做菜單管理的時候,刪除父級,會對應將它的子分類刪除,而不需要像我之前那篇文章【PHP在無限分類時注意的一些問題(不保證代碼完全正確哦)】一樣,那么麻煩。
