symfony 在 prepersist 上的 foreach 循环中添加数组集合中的唯一值
symfony add unique values from array collection within foreach loop on prepersist
我想将 'markets' 添加到我的文档中,该文档可以在一个表格中创建,您可以在其中 select 分配给这些市场的代理机构。因此,您没有具体 select 市场,但它们是由 select 代理机构自动添加的。
这背后的逻辑是有效的,但有一件事我还没有实现:
一个市场有多个代理机构,但我只想显示一次市场。我的 foreach 循环看起来像这样:
if(count($this->getAgencies()) > 0){
foreach($this->getAgencies() as $agency) {
$this->addMarket($agency->getMarket());
}
}
}
这很有效,只要我 select 每个市场只有一个代理机构。一旦我 select 多个代理商针对一个市场,它就不再起作用了。为了避免这种情况,我将代码更改为:
$markets = $this->getMarkets();
if(count($this->getAgencies()) > 0){
foreach($this->getAgencies() as $agency) {
if(!$this->markets->contains($markets)) {
$this->addMarket($agency->getMarket());
}
}
}
由于市场和机构都是数组集合,简单的 "in_Array" 或 "unique_array" 是行不通的。所以我认为 "contains" 是我应该用于 arraycollections 的函数。不过好像不是。。
还有什么想法吗? :)
更改条件部分代码,您应该检查 $this->markets 集合中是否已经存在代理市场:
if(!$this->markets->contains($agency->getMarket())) {
$this->addMarket($agency->getMarket());
}
我想将 'markets' 添加到我的文档中,该文档可以在一个表格中创建,您可以在其中 select 分配给这些市场的代理机构。因此,您没有具体 select 市场,但它们是由 select 代理机构自动添加的。 这背后的逻辑是有效的,但有一件事我还没有实现: 一个市场有多个代理机构,但我只想显示一次市场。我的 foreach 循环看起来像这样:
if(count($this->getAgencies()) > 0){
foreach($this->getAgencies() as $agency) {
$this->addMarket($agency->getMarket());
}
}
}
这很有效,只要我 select 每个市场只有一个代理机构。一旦我 select 多个代理商针对一个市场,它就不再起作用了。为了避免这种情况,我将代码更改为:
$markets = $this->getMarkets();
if(count($this->getAgencies()) > 0){
foreach($this->getAgencies() as $agency) {
if(!$this->markets->contains($markets)) {
$this->addMarket($agency->getMarket());
}
}
}
由于市场和机构都是数组集合,简单的 "in_Array" 或 "unique_array" 是行不通的。所以我认为 "contains" 是我应该用于 arraycollections 的函数。不过好像不是。。 还有什么想法吗? :)
更改条件部分代码,您应该检查 $this->markets 集合中是否已经存在代理市场:
if(!$this->markets->contains($agency->getMarket())) {
$this->addMarket($agency->getMarket());
}