symfony中的双映射关系?有可能的?
问题描述:
我没有理想怎么地图实体symfony的一倍。symfony中的双映射关系?有可能的?
我有表
Matches
________
id
u_id1 : reference to user
u_id2 : reference to user
status: enum
现在我不希望每一场比赛创造双重记录。
我要加载用户的匹配,其中u_id1 = user_id or u_id2 = user_id
。 所以..我希望让我的用户对象inteligent方法有效。例如$ user-> getMatches();返回第一个或第二个u_id具有当前用户标识的匹配项。
有什么想法?
答
也许你可以尝试这样的事情。 定义用户实体
class Matches {
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="userOneMatches")
* @ORM\JoinColumn(name="u_id1", referencedColumnName="id")
* **/
protected $u_id1;
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="userTwoMatches")
* @ORM\JoinColumn(name="u_id2", referencedColumnName="id")
* **/
protected $u_id2;
}
,并在用户实体法getAllMatches();
两个关系到所有比赛结合起来。
class User {
/** @ORM\OneToMany(targetEntity="Matches", mappedBy="u_id1" **/
protected $userOneMatches;
/** @ORM\OneToMany(targetEntity="Matches", mappedBy="u_id2" **/
protected $userTwoMatches;
public function getAllMatches()
{
// return $userOneMatches + $userTwoMatches
}
}