datamapper orm高级关系

时间:2013-03-14 14:51:01

标签: codeigniter orm datamapper

我使用datamapper orm和codeigniter

我的表是:

人 id,name,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名相关人员设置?我怎么把桌子摆好?我想留在一个“人”桌上。

THX

1 个答案:

答案 0 :(得分: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');
....