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 
    } 

}