2015-06-21 127 views
0

我有一個包含個人和企業(除其他事項外)的數據模型。我通過創建一箇中間對象PersonCompanyRelation來創建它們之間的多對多關係,該對象包含與人員和公司的多對一關係。這是因爲我想存儲關於關係的信息。這工作得很好許多一對多的關係,本身帶有的Symfony /學說

現在我想要做相同的,但用於連接到人的人。我又創建了一個名爲PersonPersonRelation的關係對象。我遇到的問題是,在Person對象中,我必須指定對象在關係對象中映射到的屬性,但這是有問題的,因爲它與關係之間的關係不同。有時候這會是A,有時會是B.不管它是哪一個,但沒有一個邏輯系統,我不能邏輯地檢索關係。我該怎麼做呢?

的代碼PersonPersonRelation

/** 
* @ORM\ManyToOne(targetEntity="Person", inversedBy="personPersonRelations") 
*/ 
protected $personA; 
/** 
* @ORM\ManyToOne(targetEntity="Person", inversedBy="personPersonRelations") 
*/ 
protected $personB; 

在人的代碼。注意:我怎麼需要指定它映射到關係屬性,但是從個人的角度,我不知道這是否將是角色或PersonB

/** 
* @ORM\OneToMany(targetEntity="PersonPersonRelation", mappedBy="personA") 
*/ 
protected $personPersonRelations; 

爲了澄清如下要求;該情況是我想要存儲人與人之間關係的專業,包括有關就像他們是怎麼認識(同事,朋友,家人等),以及日期等

回答

0

我敢肯定,如果你指定較少通用這種關係的細節名字,都應該更清楚。

只是爲了和例子,讓我們說,人,人的關係是老闆與員工之間的關係。

所以,基本上,每個人都會有兩個屬性

class Person 
{ 
    //other properties 

    /** 
    * @ORM\OneToMany(targetEntity="person", mappedBy="employees") 
    */ 
    $boss; 

    /** 
    * @ORM\ManyToOne(targetEntity="person", inversedBy="boss") 
    */ 
    $employees; 
} 

如果我理解正確的問題,在每一個瞬間,則可以選擇嘗試檢索:

  • 從老闆的人的觀點,在他所有的員工
  • 從一個員工的人來看,其老闆

當然,我的例子只是一個例子,不知道你是否能夠適應你的具體情況。希望如此。

+0

感謝您的回答。這種關係真的是平等的。在這種特殊情況下,我想註冊一個人的專業網絡。隨着這種關係,我想存儲他們如何見面。這可能是因爲同事,也是朋友,家人,未知等 – garma

+0

所以從這Person實體的角度來看,我無法想出一個辦法來邏輯存儲在任何人物角色對PersonRelation的參考人或personB(並能夠在邏輯上檢索) – garma