2016-09-27 3 views
3

Я работаю с Doctrine 2 как ORM для Slim 3, но я продолжаю застревать в разделе сопоставления объектов, когда пытаюсь реализовать двунаправленное отношение.Аннотации «@OneToMany» в собственности никогда не были импортированы (Doctrine2)

/** 
* Class Resource 
* @package App 
* @ORM\Entity 
* @ORM\Table(name="users", uniqueConstraints={@ORM\UniqueConstraint(name="user_id", columns={"user_id"})})) 
*/ 
class User 
{ 
    /** 
    * @ORM\ManyToOne(targetEntity="UserRoles", inversedBy="users") 
    * @ORM\JoinColumn(name="role_id", referencedColumnName="user_role_id") 
    */ 
    protected $user_role; 
} 

/** 
* Class Resource 
* @package App 
* @ORM\Entity 
* @ORM\Table(name="user_roles", uniqueConstraints={@ORM\UniqueConstraint(name="user_role_id", columns={"user_role_id"})})) 
*/ 
class UserRoles 
{ 
    /** 
    * @ORM\OneToMany(targetEntity="User", mappedBy="user_role") 
    */ 
    protected $users; 

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

я получаю исключение при попытке php vendor/bin/doctrine orm:schema-tool:update --force

выход:

[Учение \ Common \ Аннотации \ AnnotationException] [Семантическая Error] аннотаций "@OneToMany" я n свойство App \ Entity \ UserRoles :: $ users никогда не импортировалось. Возможно, вы забыли добавить выражение «use» для этой аннотации?

+0

я удалил сеттеров и методы получения и соответствующие поля из-за StackOverflow ограничение кода соотношение текста –

+1

Это «@ORM \ OneToMany». Подробнее см. В инструкциях 'use'. –

+0

Что сказал @AlexBlex. Вам также не хватает '' @ORM \ '' для '' ManyToOne'' и '' JoinColumn'' –

ответ

12

классы Учение как

являются частью Doctrine\ORM\Mapping пространства имен.

Вы должны импортировать это пространство имен с ORM как псевдоним. Затем вы должны добавить @ORM перед этими классами в качестве аннотации, чтобы заставить их работать.

use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\ManyToOne(...) 
* @ORM\JoinColumn(...) 
*/ 

Если вы просто хотите использовать каждый из этих классов, вы должны импортировать их отдельно.

use Doctrine\ORM\Mapping\ManyToOne; 
use Doctrine\ORM\Mapping\JoinColumn; 

/** 
* @ManyToOne(...) 
* @JoinColumn(...) 
*/ 
+0

Итак, ваш вопрос == решение? – danopz

+0

все еще не работал .. получение той же ошибки –

+0

У вас есть инструкция использования поверх ваших сущностей? – danopz