2017-09-12 84 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