2013-04-11 101 views
0

我有一個與許多其他實體(例如產品或類別)有關的實體(例如圖像)。我想知道如果某個關係存在於別的地方,哪一個是防止刪除實體的最好方法(例如,如果某個關係與產品相關,我不應該刪除它)。我的想法是在存儲庫類中搜索關係並返回結果,或者在實體的preRemove生命週期事件中執行「某事」。哪個是最好的Symfony2防止刪除相關實體的方法?防止刪除實體

+0

我想最好的方法是搜索相關的實體(如果有的話),然後實現自己的邏輯。 – DonCallisto 2013-04-11 21:33:04

回答

1

只要沒有設置級聯刪除,任何定向實體都將防止刪除相關實體。如果你的關聯不是雙向的,你也必須從背面查詢。

要擴展CJ的答案,您可以刪除刪除鏈接,但是您也必須檢查控制器中的實體,因爲任何URL黑客都可以刪除一個對象,如果它的ID是已知的。

0

我會建議你可以更好地禁用實體之間存在關係時的表單刪除鏈接。通過這種方式,您甚至可以讓客戶理解存在相關實體,並且在刪除關係之前不應將其刪除。

您可以在刪除它之前始終檢查實體,以及在實際調用symfony中的某個進程時,您實際上可以訪問該實體的所有對象的整個對象。所以你可以在那個特定點檢查它並做出條件陳述。

我個人認爲,您不應該嘗試導入過多的庫函數來處理可能由您沒有的小事情。這將使你的代碼更容易理解,甚至更輕,因爲包括額外的庫的前景很可能會超過你所需要的