Laravel 模型關聯——連帶刪除

問題來源

在項目中,咱們常常須要在刪除一個表中數據的時候,和它相關聯的表也要有相應的操做(刪除或修改),Laravel 提供了很是便捷的操做方法php

解決方法

如今假設咱們在作一個博客系統,那麼就會有文章表、用戶表,而且這兩個表是相關聯的,若是咱們須要在刪除用戶的時候,同時刪除文章中的對應數據,那麼在 Laravel 中:html

// 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();
        });
    }
}

這樣,咱們在刪除用戶的時候,與之對應的文章也會被刪除,方便操做了許多。post

固然,我認爲這個也能夠擴展,咱們能夠在模型中關聯自身對應的數據表,即在作菜單管理的時候,刪除父級,會對應將它的子分類刪除,而不須要像我以前那篇文章【PHP在無限分類時注意的一些問題(不保證代碼徹底正確哦)】同樣,那麼麻煩。this

相關文章
相關標籤/搜索