Symfony2 – Доктрина и FOSUserBundle – неправильные аннотации

Я новичок в Symfony2 в целом. Однако эта проблема связана с Doctrine и FOSUserBundle.

У меня есть следующая Entity User.php, созданная на основе FOSUserBundle и саморегуляция многих-многих.

<?php namespace Pan100\MoodLogBundle\Entity; use FOS\UserBundle\Entity\User as BaseUser; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="fos_user") */ class User extends BaseUser { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @ManyToMany(targetEntity="User", mappedBy="hasAccessToMe") **/ protected $hasAccessTo; /** * @ManyToMany(targetEntity="User", inversedBy="hasAccessTo") * @JoinTable(name="access", * joinColumns={@JoinColumn(name="id", referencedColumnName="id")}, * inverseJoinColumns={@JoinColumn(name="accessor_id", referencedColumnName="id")} * ) **/ private $hasAccessToMe; public function __construct() { parent::__construct(); $this->hasAccessTo = new \Doctrine\Common\Collections\ArrayCollection(); $this->hasAccessToMe = new \Doctrine\Common\Collections\ArrayCollection(); } } 

При попытке обновить кеш или отбрасывает следующую ошибку:

 [Doctrine\Common\Annotations\AnnotationException] [Semantical Error] The annotation "@ManyToMany" in property Pan100\MoodLog Bundle\Entity\User::$hasAccessTo was never imported. Did you maybe forget to add a "use" statement for this annotation? 

Что здесь не так? И что такое «использование заявления»?

Вы забыли добавить префикс @ORM\ в свои аннотации:

 /** * @ManyToMany(targetEntity="User", mappedBy="hasAccessToMe") **/ 

должно быть

 /** * @ORM\ManyToMany(targetEntity="User", mappedBy="hasAccessToMe") **/ 

Вы также можете импортировать каждую аннотацию индивидуально – так, как я предпочитаю:

 use Doctrine\ORM\Mapping\Entity; use Doctrine\ORM\Mapping\ManyToMany; // ... /** * @Entity */ class User { /** * @ManyToMany(targetEntity="Thing") */ private $things; // ... }