我有2个表成员和评论..我成功地加入了他们。所以现在,我可以获得任何用户的所有条目的集合。但我需要创建一个名为“粉丝”的anothewr表,其中每个用户都可以跟随每个人。因此,现在,我希望能够从1个用户那里得到他所关注的用户的评论。但是不知道用这个新表来完成这种关系的方法是什么。
用户实体:
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 :(得分:0)
这样做的最佳方式可能是建立从粉丝到会员的关系。
然后为Comments Entity创建一个EntityRepository,您将在其中创建一个函数,例如:getCommentsByUserIdIncludingFollowers($ userId),您可以在其中创建一个返回所需信息/注释的DQL查询。
这就是我建议的方式。