2016-10-03 9 views
0

1対多の関係を維持するときにDoctrineからエラーが発生します。私はここで同様の質問を見たことがあるが、答えは役に立たない。ここで1対多でDoctrine ArrayCollectionがエラーをスローする

は誤りです:

<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 

は定義:

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

コンストラクタ:

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

    } 

セッター:

public function setScriptsVersions(ScriptsVersions $ScriptsVersions){ 
     if(!$this->ScriptsVersions->contains($ScriptsVersions)){ 
      $this->ScriptsVersions[] = $ScriptsVersions; 
      $ScriptsVersions->setScripts($this); 
     } 
    } 
私はの$ this - のクラスをダンプする場合は

> ScriptsVersionsがそれを割り当てた後、私はコメントで述べたように

+1

「定義」の下に投稿したコードは、 'Scripts'エンティティのコードですか?もしそうなら、何かが間違っています - 'targetEntity'は、関連が定義されているエンティティと同じであってはなりません。あなたが協会の両面を投稿して助けになればいいですか? – Will

+0

ああ!あなたは、絶対に正しい。これがエラーです。誤ってtargetEntityとmappedByを切り替えただけで、MetaDataからテーブルを作成する段階で不平を言うことはありませんでしたが、後でこのエラーが発生しました。私は正しい答えを提出しますか? –

+0

よかった、ありがとう、ありがとう。 – Will

答えて

1

...それはDoctrine\Common\Collections\Collectionを言う、何とかUnityOfWorkではなく、ArrayCollectionののオブジェクトを取得します - コードでtargetEntityを貼り付けたオブジェクトが正しいエンティティクラスを指していません。私が助けることができてうれしいよ:)

関連する問題