2017-09-06 14 views
0

私はsymfonyでエンティティを二重にする方法は理想的ではありません。symfonyで二重にマップされた関係?可能です?

私は今、私は1試合あたりの二重レコードを作成したくないテーブル

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();第1または第2のu_idが現在のユーザIDを持つ場所に一致するものを返します。

答えて

0

多分このようなことを試すことができます。すべての一致を組み合わせるために、Userエンティティ

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();で2つの関係を定義します 。

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 
    } 

} 
関連する問題