2014-10-16 124 views
1

我正在尋找銷燬雄辯集合的策略,例如模型「包含」其他模型。Laravel:刪除雄辯集合

在Ruby on Rails的ActiveRecord中,有一個dependent: :destroy選項,可以在定義關係時放置,也就是說,例如,一個order被刪除,然後order_lines也必須去。

Laravel中有類似的東西嗎?或者除了手動清理並將其包裝在交易中之外,還有其他替代方案?

+0

你有沒有想過爲DB中的相關表正確設置ondelete? – 2014-10-16 19:44:25

+0

ondelete?你在談論數據庫觸發器嗎?我不想把這種邏輯放入數據庫中。 – 2014-10-16 19:49:02

+0

[自動刪除Laravel中的相關行(Eloquent ORM)]的可能的重複(http://stackoverflow.com/questions/14174070/automatically-deleting-related-rows-in-laravel-eloquent-orm) – 2014-10-16 21:01:19

回答

0

如果使用Laravel架構構建,你應該使用外鍵和外鍵添加例如:

$table->foreign('entry_id') 
    ->references('id') 
    ->on('entries') 
    ->onDelete('CASCADE'); 

當然你也可以做,例如phpMyAdmin的相同。

當使用這樣的結構,如果從entries這種情況下,記錄將被刪除,自動從該表中有entry_id一樣identries正被刪除將被刪除的記錄。

它不是一個觸發器,因爲觸發器的結構要複雜得多,它只是定義關係並告訴如果相關的父記錄將被刪除,該怎麼做。

+0

儘可能多是一種做法,它不是解決方案。我正在尋找讓Laravel/Eloquent工作的方法。不是我的SQL數據庫。 – 2014-10-16 20:38:47

+0

@NielsB也許你想看看http://stackoverflow.com/questions/14174070/automatically-deleting-related-rows-in-laravel-eloquent-orm然後,但使用'onDelete'是我認爲沒有編碼的最佳選擇 – 2014-10-16 20:54:43

+0

我同意,但我更喜歡編碼。感謝您提供其他問題的鏈接。我正在投票結束這個重複。 – 2014-10-16 21:02:10