2013-09-16 7 views
0

트위터 사용자와 팔로어를 캡처하는 스키마를 설정하려고합니다.Symfony Doctrine - 외래 키가없는 조인

두 개의 테이블이 있습니다. Twitter 사용자 및 추종자. Follower에는 id, twitterUser, follower의 3 개의 필드가 있습니다.

는 트위터 사용자가 테이블에 추가 될 때, 나는 또한에 관심이있을 수있는 다른 사용자와 가입 호응에 행을 추가합니다.

을 그러나, 나는 심포니/교리가 테이블을 구축 할 수있는 경우 내가 원하는하지 않는 한, 다음과 같은 -

그것은 내가 원하지 않는 follower에 대한 외래 키를 만드는 방법에 대한 주장
/** 
* @ORM\Entity 
* @ORM\Table(name="follower") 
* @ORM\HasLifecycleCallbacks 
*/ 
class Follower 
{ 
    public function __construct() 
    { 
    } 

    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\ManyToOne(targetEntity="TwitterUser", inversedBy="followers") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    */ 
    protected $twitterUser; 

    /** 
    * @ORM\ManyToOne(targetEntity="TwitterUser", inversedBy="following") 
    * @ORM\JoinColumn(name="follower_id", referencedColumnName="id") 
    */ 
    protected $follower; 
... 

같은 것을 사용하여 내 항상 작동 조인 수 있도록 모든 트위터 사용자를 얻어야합니다.

내가 할 수있는 유일한 방법은 주석을 제거하고 조인을위한 SQL을 직접 작성하는 것입니다. 그것을하는 더 똑똑한 방법이 있습니까?

답변

0

나는 아래의 설명과 같이 ManyToMany 자체 참조 관계를 사용하는 것이 좋습니다 : http://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html#many-to-many-self-referencing

+0

예, 해봤 자기 참조를하지만, 외래 키는 여전히 생성됩니다. 예제에서 -'ALTER TABLE 친구들 외래 키 추가 (user_id) 참고 사용자 (id); ALTER TABLE friends 외부 키 추가 (friend_user_id) 참고 사용자 (id); – wkstar