2017-02-09 64 views
0

我有兩個具有一對多連接的模型。例如,讓它成爲UserUserComment模型。當我打電話給User::destroy的方法時,我也想銷燬每個UserComment實例,其中user_id的字段等於id的銷燬User。我可能簡單地重載User::destroy方法,但我想知道是否有更好的方法來實現這一點。在Laravel銷燬具有所有依賴關係的模型實例

回答

1

是的,最好的方法(或更高效)是通過遷移來完成。我們來舉一個UserUserComment的例子。按原樣離開用戶遷移。對於用戶評論做:

Schema::create('usercomments', function(Blueprint $table){ 
    $table->integer('user_id')->unsigned(); 
    .... 

    $table->foreign('user_id', 'fk_user_id') 
    ->references('id') 
    ->on('users') 
    ->onDelete('cascade') 
    ->onUpdate('cascade'); //not needed in your case. 
}); 

好吧,我很久沒有使用這個,所以你可以檢查在線語法。但這是它的要點。

當你刪除一個用戶時,他的所有評論將被你的數據庫自動刪除。

Goodluck mate!

+0

難道我的理解對不對,要遷移能夠設置MySQL存儲過程的?這看起來很驚訝!我會檢查出來,謝謝。 –

+0

使用Google搜索。這不是一個存儲過程,而只是MySQL外鍵實現。無論如何,感謝填寫我的SQL知識差距。 –

1

我會爲此使用數據庫(如上面的EddyTheDove所建議的那樣),但是如果您不想爲此使用數據庫...您可以將某些內容添加到用戶模型的刪除事件中。

例:

protected static function boot() { 
    parent::boot(); 
    static::deleting(function($user) { 
     $user->user_comments()->delete(); 
    }); 
} 
相關問題