Я пытаюсь сериализовать объекты для мобильного дайджеста. У меня есть этот класс Entity:
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Entity\User as BaseUser;
/**
* xxx\xxx\Entity\User
*
* @ORM\Table()
* @ORM\Entity()
* @ORM\Entity(repositoryClass="xxx\xxx\Entity\UserRepository")
*/
class User extends BaseUser
{
/**
*
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var \Doctrine\Common\Collections\ArrayCollection
*
* @ORM\OneToMany(targetEntity="\xxx\xxx\Entity\Music", mappedBy="user")
*/
protected $musics;
/**
* @var \Doctrine\Common\Collections\ArrayCollection
*
* @ORM\OneToMany(targetEntity="\xxx\xxx\Entity\Message", mappedBy="user")
*/
protected $messages;
/**
* @var \Doctrine\Common\Collections\ArrayCollection
*
* @ORM\OneToMany(targetEntity="\xxx\xxx\Entity\Location", mappedBy="user")
*/
protected $locations;
public function __construct()
{
parent::__construct();
$this->musics = new ArrayCollection();
$this->messages = new ArrayCollection();
$this->locations = new ArrayCollection();
}
}
Теперь, когда я вызываю эту строку в своем DefaultController.php
:
$user = $this->getUser();
$em = $this->getDoctrine()->getManager();
$array = $em->getRepository('xxxBundle:User')
->findLatest();
$serializer = $this->get('serializer');
$response = $serializer->serialize($array, 'json'); //THIS LINE THROWS EXCEPTION
У меня use Doctrine\Common\Collections\ArrayCollection;
в DefaultController.php
, но похоже ошибка исходит изнутри JMSSerializerBundle
.
Что я пробовал до сих пор
- Я попытался определить аннотации
Doctrine
, чтобы они начинались с\
, но это не помогло. - Я очищал свой кеш миллион раз
- Я искал подобные исключения, но все они, похоже, вызваны опечаткой, и я проверял наличие опечаток в течение последних 48 часов, и я не могу найти ни одной.
Классы были созданы автоматически с помощью app/console
.
namespace
поверх этого файла класса? Вы специально опустили это здесь или просто опечатка c/p? :) Возможно, если у вас его вообще нет, PHP не умеет автозагружатьArrayCollection
класс... - person Jovan Perovic   schedule 19.10.2012ArrayCollection
действительно существует в пространстве имен. Я использую его в другом контроллере, и он там работает. - person tolgap   schedule 19.10.2012