Это странно. У меня есть объект, который может содержать ArrayCollection других связанных объектов. Когда я делаю пару вспомогательных методов, чтобы позволить мне добавлять/извлекать значение сингулярного объекта, я получаю исключение Symfony2, указывающее, что метод не определен. Я включаю пространство имен, поэтому я не понимаю, в чем проблема. Код (имена немного изменились из-за NDA) ниже:Symfony2 - Doctrine ArrayCollection методы возвращаются как undefined
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: Error: Call to undefined method Acme\MyBundle\Entity\Thing::current() in /home/kevin/www/project/vendor/acme/my-bundle/Acme/MyBundle/Entity/MyEntity.php line 106
Судя по ошибке, это выглядит, как это не обрабатывая things
как ArrayCollection. Есть ли способ заставить things
быть ArrayCollection? У меня уже есть следующее:
/**
* @var ArrayCollection things
*
* @ORM\OneToMany(targetEntity="Thing", mappedBy="other")
*/
private $things;
Но я не уверен, что еще делать.
У вас есть метод 'add' в вашем' Thing' классе? – bpoiss
Можете ли вы 'var_dump()' объект перед вызовом 'getThing()'? – cheesemacfly
№ Опять же, похоже, что «забыть», что «вещи» должны быть коллекцией в этот момент. –