2016-10-03 3 views
0

Ich bekomme einen Fehler von Doctrine, wenn ich eine Eins-zu-viele-Beziehung behalte. Ich habe ähnliche Fragen hier gesehen, aber die Antworten helfen leider nicht. HierDoctrine ArrayCollection mit Eins-zu-Viele löst einen Fehler aus

ist der Fehler:

<b>Fatal error</b>: Uncaught exception 'Doctrine\ORM\ORMInvalidArgumentException' with message 'Expected value of type &quot;Doctrine\Common\Collections\Collection|array&quot; for association field &quot;Entities\Scripts#$ScriptsVersions&quot;, got &quot;Entities\ScriptsVersions&quot; instead.' in H:\SERVER\htdocs\10pages\www\php\Vendors\doctrine\orm\lib\Doctrine\ORM\ORMInvalidArgumentException.php:206 

Definition:

/** 
    * @OneToMany(targetEntity="Scripts", mappedBy="ScriptsVersions",cascade={ "persist","remove"}) 
    **/ 
    protected $ScriptsVersions; 

Constructor:

public function __construct() { 
$this->ScriptsVersions = new \Doctrine\Common\Collections\ArrayCollection(); 

    } 

Setter:

public function setScriptsVersions(ScriptsVersions $ScriptsVersions){ 
     if(!$this->ScriptsVersions->contains($ScriptsVersions)){ 
      $this->ScriptsVersions[] = $ScriptsVersions; 
      $ScriptsVersions->setScripts($this); 
     } 
    } 

Wenn ich die Klasse von $ this- Dump> ScriptsVersions, nachdem es der Zuordnung, sagt es Doctrine\Common\Collections\Collection, aber irgendwie bekommt UnityOfWork das Objekt statt der Arraycollection ...

+1

Der Code, den Sie unter "Definition" veröffentlicht haben - ist das auf der 'Scripts' Einheit? Wenn dies der Fall ist, stimmt etwas nicht - "targetEntity" sollte nicht mit der Entität übereinstimmen, auf der die Assoziation definiert ist. Wenn Sie beide Seiten der Assoziation veröffentlichen könnten, wäre das hilfreich. – Will

+0

Oh! Du liegst absolut richtig. Das ist es, das ist der Fehler - nur versehentlich die targetEntity und mappedBy herum geschaltet und es hat sich nicht auf der Bühne der Erstellung der Tabelle von MetaData, aber später in diesem Fehler geführt. Willst du die Antwort für mich einreichen, um richtig zu markieren? –

+0

Großartig, ich habe es getan, danke. – Will

Antwort

1

Wie ich im Kommentar erwähnt - die targetEntity im Code Sie eingefügt, zeigt nicht auf die richtige Entitätsklasse. Froh, dass ich helfen konnte :)

Verwandte Themen