symfony中的双映射关系?有可能的?

时间:2017-09-06 10:13:44

标签: symfony double mapping entity

我没有理想如何在symfony中加倍地图实体。

我有桌子

Matches
________
id    

u_id1 : reference to user

u_id2 : reference to user

status: enum       

现在我不想为每场比赛创造双重记录。

我想在u_id1 = user_id or u_id2 = user_id加载用户匹配。 所以..我想让我的方法在用户对象智能有用。例如$ user-> getMatches();返回匹配第一个或第二个u_id具有当前用户ID的位置。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

也许你可以尝试这样的事情。 在用户实体

中定义两个关系
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
   }

}