2014-01-23 35 views
1

我正在使用mysql的Eloquent plymorphic關係和ON DELETE CASCADE選項,並且擔心我的數據如何隨時間保持一致。讓我來解釋:Laravel 4.0級聯刪除和多態關係

如果我有一個包含幾種類型的傢俱樣板房(的Table morphMany,ChairCouch ...),而我決定要刪除它,他的相關傢俱不會被刪除。

爲了解決這個issure我處理的有關傢俱的缺失在刪除事件的Room模式,但這一事件並不一定會被解僱所有的時間

假設我有一個叫House的其他模型,包含幾個房間(hasMany)。如果我決定刪除它,其相關型號將被mysqlON DELETE CASCADE選項刪除。然後,我會留在我的表tables,chairs,couchs中的數據不再相關,並且不再與rooms表中的任何一行有關。

那麼保持數據庫與ON DELETE CASCADE和Eloquent的多態關係一致的最佳方法是什麼?

回答

2

如果您使用的是原始數據庫(級聯)方法,則繞過雄辯,無法做到您想做的事。

爲房屋設置一個已刪除的事件,它遍歷所有房間並刪除這些房間,這再次觸發房間的已刪除事件。

+0

所以,如果我明白你說的話,在遷移中放置級聯刪除的能力實際上不應該被使用,因爲所有的刪除操作都只能通過Eloquent來處理。我對嗎 ? – alxscms

+0

有時級聯工作正常,但如果您需要更多高級邏輯(何時刪除)(使用您的情況),請使用模型事件。 – Andreas