2011-08-10 31 views
1

我有2个表格成员和评论..我成功地把他们联系到。所以现在,我可以获得任何用户的所有条目的集合。但我需要创建一个名为'追随者'的表,每个用户可以关注每个表。因此,现在,我希望能够从1位用户那里获得所有评论以及他所关注用户的评论。但不知道用什么方法来完成与这张新表的关系。学说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) 
然而

,我怎么能添加'跟随'表(就像twitter一样)。在哪里可以关注其他人,因此,我不仅能够查看用户的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

可能做到这一点的最好办法是创建追随者成员的关系。

然后为评论实体创建一个EntityRepository,您将在其中创建一个如下所示的函数:getCommentsByUserIdIncludingFollowers($ userId),您可以在其中创建一个DQL查询,以返回所需的正确信息/注释。

这将是我建议的方式。

+0

从追随者到会员有什么样的关系? –

+0

在关注者实体中,我将创建与成员的ManyToMany关系。您可能希望一名追随者能够追随多个成员,并让一名成员拥有多个追随者。 请参阅:http://www.doctrine-project.org/docs/orm/2.0/en/reference/association-mapping.html#many-to-many-unidirectional – AquaRobin

+0

但如果我这样做,它会创建一个manay-many表格,其中显示了成员和追随者之间的联系。所以,这将如何工作..我如何将评论附加到这个链接表? –