2017-09-12 5 views
0

Innerhalb einer Vorspülen Funktion in meiner Einheit, habe ich den folgenden CodeWie gelöschte Einträge aus ArrayCollection-Logik in Symfony entfernen?

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

so im Grunde, was ich tue, ich Dokumente zu erstellen, die den Agenturen zugewiesen bekommen und diese Agenturen gehören zu verschiedenen Märkten. Da es mehr Agenturen als Märkte gibt und ich dort keine doppelten Märkte haben möchte, habe ich die if-Bedingung implementiert. Das Hinzufügen funktioniert nun einwandfrei. Aber wenn ich mein Dokument bearbeiten und zum Beispiel eine Agentur aus der US (= Markt) entfernen möchte und es keine andere Agentur aus den USA gibt, möchte ich, dass US vollständig aus diesem Dokument entfernt wird. Ich stecke mit der dahinter stehenden Logik fest.

Wenn also die zu entfernende Agentur/der Markt in den übrigen Märkten nicht enthalten ist, sollte sie gestrichen werden, aber wenn noch eine andere Agentur von diesem Markt übrig ist, sollte der Markt (natürlich) nicht gelöscht werden.

Märkte und Agenturen sind beide ArrayCollections innerhalb meiner Dokumenteinheit, daher existiert die RemoveMarket-Funktion!

Antwort

0

Für meine, mit dieser Struktur Dokument -> Agency -> Markt

neues Array generieren $ this-> Märkte von Agenturen in den Vorspülen.

ODER

Create-Methode getMarkets() und die Rück Märkte von Agenturen, wenn Sie benötigen.

+0

Ich sagte Ihnen, dass ich diese Methode bereits habe. Sehen Sie sich meinen letzten Absatz an: "Märkte und Agenturen sind beide ArrayCollections innerhalb meiner Dokumenteinheit, also existiert die RemoveMarket-Funktion!" Ich habe Probleme mit der Logik! – sonja

+0

Ich verstehe nicht genau, was Sie meinen .. Ich dachte schon, dass ich die PreFlush-Methode verwenden müsste. Aber ich wundere mich über die ** LOGIK **. also wie meine if-bedingung oder foreach oder was auch immer ich brauchen würde aussehen würde. Wie kann ich überprüfen, ob der Markt entfernt werden muss oder nicht? – sonja

+0

Ok, diese Logik ist in der preFlush von Document entity? – Cuchu

Verwandte Themen