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());
}