0

これは奇妙です。他の関連エンティティの ArrayCollection を含むことができるエンティティがあります。いくつかのヘルパー メソッドを作成して、単一のエンティティの値を追加/取得できるようにすると、メソッドが定義されていないことを示す Symfony2 例外が発生します。名前空間を含めているので、何が問題なのか途方に暮れています。以下のコード (NDA により名前が若干変更されています):

namespace Acme\MyBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

// ...

public function setThing($thing)
{
    $this->things->add($thing);
}

public function getThing()
{
    return $this->things->current();
}

本当に奇妙なのは、例外をスローしているが、そうでcurrent()はないということadd()です:

FatalErrorException: エラー: Call to undefined method Acme\MyBundle\Entity\Thing::current() in /home/kevin/www/project/vendor/acme/my-bundle/Acme/MyBundle/Entity/MyEntity.php 行 106

エラーから判断するthingsと、ArrayCollection として扱われていないようです。強制的thingsに ArrayCollection にする方法はありますか? 私はすでに次のものを持っています:

/**
 * @var ArrayCollection things
 *
 * @ORM\OneToMany(targetEntity="Thing", mappedBy="other")
 */
private $things;

しかし、他に何をすべきかわかりません。

4

2 に答える 2

0

エンティティ コンストラクターで ArrayCollection を初期化する必要があります。

public function __construct()
{
     $this->things = new ArrayCollection;
}

それ以外の場合は、null代わりArrayCollectionに新しいエンティティを取得しました

于 2013-06-11T19:08:29.883 に答える