2013-03-14 26 views
0

我使用DataMapper的ORM用笨DataMapper的ORM先進的關係

我的表是:

人 ID,姓名,related_person1_id,related_person2_id

人可以有1個related_person1,1 related_person2

我如何在我的模型文件中設置關係?

它在實況描述:

class Person extends DataMapper { 
$has_many = array(
    'related_person' => array(
     'class' => 'person', 
     'other_field' => 'person', 
     'reciprocal' => TRUE 
    ), 
    'person' => array(
     'other_field' => 'related_person', 
     'reciprocal' => TRUE 
    ) 
); 

}

我怎麼可以設置爲超過1分相關的人嗎?以及我如何建立我的桌子?我想留下1個「人」桌。

THX

回答

0

最好的辦法是創建一個單獨的關係表。

所以,你有一個人表:

id:int 
name:text 

則關係表

id:int 
person_id:int 
related_to_person_id:int 
relationship 

這樣,只要你想,你可以爲每個人儘可能多的關係。

人:

id | name 
1 | Jimmy Doublechin 
2 | Opie Hardabs 
3 | Anthony Predator 

關係:

id | person_id | related_to_person_id | relationship 
1 |   1 |     2 | lover 
2 |   1 |     3 | best buddy evar 
3 |   3 |     2 | Mother 

然後

class Person extends Datamapper { 
    public $has_many = array('relationships'); 
... 


class Relationships extends Datamapper { 
    public $has_one = array('person'); 
.... 
+0

非常詳細的和有用的意見和答覆。我現在沒有測試它,但它確實是一個正確的解決方案。 ty。 – 2013-03-18 20:01:01