Laravel 模型關聯——連帶刪除


問題來源

在項目中,我們經常需要在刪除一個表中數據的時候,和它相關聯的表也要有相應的操作(刪除或修改),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在無限分類時注意的一些問題(不保證代碼完全正確哦)】一樣,那么麻煩。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM