2017-09-07 7 views
0

Je voudrais ajouter des «marchés» à mon document qui peuvent être créés dans un formulaire où vous pouvez sélectionner les agences qui sont affectées à ces marchés. Ainsi, vous ne sélectionnez pas spécifiquement les marchés mais ils sont automatiquement ajoutés en sélectionnant les agences. La logique derrière cela fonctionne mais une chose que je n'ai pas encore réalisée: il y a plusieurs agences pour un marché, mais je veux seulement que les marchés soient affichés une fois. Ma boucle foreach ressemble à ça:symfony ajouter des valeurs uniques de la collection de tableaux dans la boucle foreach sur prepersist

if(count($this->getAgencies()) > 0){ 
    foreach($this->getAgencies() as $agency) { 
     $this->addMarket($agency->getMarket()); 
    } 
    } 
} 

cela fonctionne bien, à condition de ne sélectionner qu'une agence par marché. Dès que je sélectionne plusieurs agences pour un marché, ça ne marche plus. Pour éviter cela, je l'ai changé le code:

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

Depuis que les marchés et les agences sont les deux arraycollections, un simple « in_array » ou « unique_array » ne fonctionne pas. J'ai donc pensé que "contains" est la fonction que je devrais utiliser pour arraycollections. Mais apparemment ce n'est pas .. D'autres idées? :)

Répondre

1

modifier le code partie condition, vous devriez vérifier si le marché pour l'agence existe déjà dans $ this-> Marchés: collections

if(!$this->markets->contains($agency->getMarket())) { 
     $this->addMarket($agency->getMarket()); 
} 
+0

Merci beaucoup, cela fonctionne parfaitement! – sonja