2016-09-27 3 views
3

Doctrine 2를 슬림 3의 ORM으로 사용하고 있지만 양방향 관계를 구현하려고 할 때 객체 매핑 섹션에 계속 걸려 있습니다.속성의 "@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

출력은 다음과 같습니다

[교리 \ 공통 \ 주석 \ AnnotationException] [의미 론적 오류] 주석은 "@OneToMany"내가 n App App \ Entity \ UserRoles :: $ users는 가져 오지 않았습니다. 이 주석에 "사용"문을 추가하는 것을 잊어 버리셨습니까?

+0

나는 텍스트 비율 코드의 제약 조건을 유래로 인해 세터와 getter와 각 분야를 제거한 –

+1

그것은 "@ORM \ OneToMany"입니다. 자세한 내용은'use' 문을보십시오. –

+0

@AlexBlex는 말했다. ''ManyToOne''과''JoinColumn''에''@ORM \''이 누락되었습니다 –

답변

12

교리 클래스

  • 법인
  • JoinColumn
  • ManyToMany
  • ManyToOne
  • OneToMany
  • OneToOne
  • 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

    엔티티 위에 use 문이 있습니까? – danopz

    관련 문제