2017-09-12 92 views
0

在我的實體預先沖洗功能,我有以下的代碼如何在Symfony中從arraycollection邏輯中刪除已刪除的條目?

$markets = $this->getMarkets(); 
if(count($this->getAgencies()) > 0){ 
    foreach($this->getAgencies() as $agency) { 
    if(!$this->markets->contains($agency->getMarket())) { 
     $this->addMarket($agency->getMarket()); 
    } 
    } 
} 

所以基本上我做什麼,我創建的文件,這會被分配給機構和這些機構屬於不同的市場。由於有更多的機構而不是市場,我不想在那裏出現重複的市場,所以我執行了if條件。現在添加作品非常好。 但是,當我想編輯我的文檔,例如刪除一個代理機構,讓我們說美國(=市場),並且美國沒有其他代理機構分配給該文檔,我希望美國完全從該文檔中刪除。我堅持這背後的邏輯。

因此,如果待取消的代理/市場沒有包含在剩餘市場中,應該刪除,但是如果還有其他代理商離開該市場,市場應當(當然)不應該被刪除。

市場和代理商都是我的文檔實體內的ArrayCollections,所以removeMarket函數存在!

回答

0

對於我,這個結構文檔 - >代理 - >市場

生成新的陣列$這個 - 從機構在前置液>市場。

OR

創建方法getMarkets(),並從機構返回市場,當你需要。

+0

我告訴過你,我已經有了這個方法。看看我的最後一段:「市場和代理商都是我的文檔實體中的ArrayCollections,所以removeMarket函數存在!」 我有邏輯問題! – sonja

+0

我不完全明白你的意思。 我覺得我必須使用preFlush方法。但我想知道** LOGIC **。所以如果我的條件或foreach或任何我需要的將是什麼樣子。我如何檢查市場是否需要移除? – sonja

+0

好吧,這個邏輯它在文檔實體的preFlush中? – Cuchu