2017-09-18 2 views
-1

Ich muss ein Symfony3-Projekt mit Sonata Admin & Doctrine Bugfix.Hinzufügen Methode in Entität nicht erreicht

bekam ich eine Feldliste mit allen Texturen in der Basis gespeichert Texture view

Das Problem in dem „addTexture“ Verfahren ist, hat der bisherige Entwickler:

public function addTexture(\AppBundle\Entity\Texture $texture) 
{ 
    if (count($this->textures[]) < 26) 
     $this->textures[] = $texture; 
    return $this; 
} 

Und wir können mehr hinzufügen als 25 Texturen: Das ist mein Fehler.

Also habe ich einen Dump ($ this-> textures); Ausfahrt; und nichts passiert, die App erreicht dies nie. Während in anderen Entitäten die "add" -Methode erreicht ist.

EDIT:

Scheint, wie es meine Doctrine2 Arraycollection ist, die nie alle Methoden meine addXXX feuern. Aber es spart meine Sammlungen in der Datenbank, und ich weiß nicht warum.

EDIT 2:

ich gefunden, wo die Liste erklärt:

 ->add('colors','sonata_type_model', [ 
      'multiple' => true, 
      'expanded' => false, 
      'property' => 'Name' 
     ]) 

Gibt es eine Möglichkeit, eine Grenze oder maximal Artikel hinzufügen? Dann muss ich die Entität nicht aktualisieren, wenn sie auf die Benutzeroberfläche beschränkt ist.

+0

Ich schlage vor, Sie (https [lesen Sie, was erlaubt ist und was nicht auf SO.]: // Stackoverflow. com/help) Diese Art von Frage ist nicht erlaubt. Sagte, dass, wenn Sie Ihren Code betrachten, sollten Sie die if-Bedingung entfernen oder auf den neuen Grenzwert aktualisieren. – DonCallisto

+0

Das Problem ist das "wenn" ist nicht einmal erreicht. Wenn ich den gesamten Methodencode lösche und nur einen var_dump & exit lege, läuft der Code normal. – Phobie

+0

Woher kam 'addTexure'? –

Antwort

0

Try Arraycollection Methoden verwenden (sagen wir, dass wir auf Farbe Entity arbeiten):

public function addTexture(\AppBundle\Entity\Texture $texture) 
{ 
    if ($this->textures->count() < 26) { 
     $this->textures->add($texture); 
     $texture->setColor($this); //Add this if you have bidirectional mapping 
    } 
    return $this; 
} 
+0

Danke, aber das Problem ist, der Code wird nie aufgerufen, die Add-Methode nie ausgelöst (aber ich weiß nicht warum, weil Texturen in der Datenbank hinzugefügt werden). Also habe ich einen Hack auf preUpdate gemacht, bis ich finde, warum add und remove nie ausgelöst werden. – Phobie

+0

Dann denke ich, dass er wahrscheinlich die Methode von der anderen Seite verwendet hat, ich meine, er fügt der Color-Klasse durch setColor (Color $ color) Textur in der Texture-Entity hinzu, also überprüfe den TexturesController oder so ähnlich. –

Verwandte Themen