2011-08-10 2 views
1

나는 2 명의 테이블 회원과 코멘트를 가지고있다. 나는 그들을 성공적으로 돕고있다. 그래서 지금, 나는 모든 사용자에 대한 모든 항목의 모음을 얻을 수 있습니다. 하지만 각 사용자가 각각 따라갈 수있는 '추종자'라는 anothewr 테이블을 만들어야합니다. 그러므로, 지금, 나는 1 명의 사용자로부터 모든 코멘트를 얻을 수 있기를 원한다. 그러나이 새로운 테이블과의 관계를 완성하기 위해 어떤 방법으로 접근해야하는지 모른다.doctrine 2 2 개의 관계에서 모음을 가져 오는 중입니까?

사용자 엔티티 :

namespace Entities\Members; 

/** 
* @Entity(repositoryClass="\Entities\Member\MembersRepository") 
* @Table(name="Members") 
* @HasLifecycleCallbacks 
*/ 
class Members extends \Entities\AbstractEntity 
{ 
    /** 
    * @Id @Column(name="id", type="bigint",length=15) 
    * @GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 
    /** @Column(name="userid", type="bigint", length=26, nullable=true) */ 
    protected $userid; 
    /** @Column(name="fname", type="string", length=255,nullable=true) */ 
    protected $fname; 
    /** @OneToMany(targetEntity="\Entities\Users\Wall", mappedBy="entry", cascade={"persist"}) */ 
    protected $commententries; 

    public function __construct() 
    { 
     $this->commententries = new \Doctrine\Common\Collections\ArrayCollection(); 
    } 
} 

의견 엔티티 :이 작품

namespace Entities\Members; 

/** 
* @Entity(repositoryClass="\Entities\Member\CommentsRepository") 
* @Table(name="comments") 
* @HasLifecycleCallbacks 
*/ 
class Comments extends \Entities\AbstractEntity 
{ 
    /** 
    * @Id @Column(name="id", type="bigint",length=15) 
    * @GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 
    /** @Column(name="userid", type="bigint", length=26, nullable=true) */ 

    /** 
    * @ManyToOne(targetEntity="\Entities\Member\Member", cascade={"persist"}) 
    * @JoinColumn(name="userid", referencedColumnName="id") 
    */ 
    protected $entry; 

} 

, 난을 통해 사용자의 모든 의견을 얻을 수있다 : 그러나

$this->repo->findByUserid(3); (userid = 3) 

, 내가 어떻게 추가 할 수 있습니다 '다음'테이블 (트위터처럼). 하나는 다른 사람을 따라갈 수 있으며, 따라서 나는 사용자 ID-3 주석을 볼 수있을뿐만 아니라 다른 사용자의 다른 코멘트도 볼 수있을 것입니다.

테이블이라고 : 추종자 : 아마

namespace Entities\Members; 

/** 
* @Entity(repositoryClass="\Entities\Member\FollowersRepository") 
* @Table(name="followers") 
* @HasLifecycleCallbacks 
*/ 
class Followers extends \Entities\AbstractEntity 
{ 
    /** 
    * @Id @Column(name="id", type="bigint",length=15) 
    * @GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 
    /** @Column(name="userid", type="bigint", length=26, nullable=true) */ 

    protected ???; 

    /** 
    * @Many ??? 
    * @JoinColumn( ??? 
    */ 
    protected $???; 

} 

답변

0

이 작업을 수행하는 가장 좋은 방법은 회원에게 호응에서 관계를 만드는 것입니다.

그런 다음 원하는 정보/주석을 반환하는 DQL 쿼리를 만드는 getCommentsByUserIdIncludingFollowers ($ userId)와 같은 함수를 생성 할 주석 엔터티에 대한 EntityRepository를 만듭니다.

이것이 내가 제안하는 방식 일 것입니다.

+0

팔로어와 회원 간의 관계가 어떻습니까? –

+0

Followers 엔터티에서 Members에 ManyToMany 관계를 만듭니다. 한 명의 팔로어가 여러 명의 회원을 따라갈 수 있고 한 명의 회원이 여러 명의 팔로어를 가질 수 있기를 원할 것입니다. 참조 : http://www.doctrine-project.org/docs/orm/2.0/en/reference/association-mapping.html#many-to-many-unidirectional – AquaRobin

+0

하지만 그 작업을 수행하면 manay-many 테이블, 회원과 추종자 사이의 연결을 보여줍니다. 그래서, 어떻게 작동 할 것입니다 .. 어떻게 내가이 연결된 테이블에 덧글을 첨부 할까? –

관련 문제