我一直在寻找这个问题的明确答案,但一直无法解决。我最近一直在使用(和学习)CakePHP,并且遇到了障碍。为了简化我的数据库,假设我们只有两个表:
persons
relationships
(或persons_persons
)
Persons 与自身有一个多对多的关系——事实上,两个人彼此之间可以有多个关系:
persons
-------
*person_id*
name
relationships
-------------
*relationship_id*
person_1_id
person_2_id
start_date
end_date
现在,如果我想说 Person1 (id=1) 与 Person2 结婚,我会在relationships
表中输入一个条目。person_1_id
将是1
,并且person_2_id
将是两个。
我可以在 CakePHP 中创建这种关系,并显示每个 Person 记录的关系(和人员)列表。但是,这是一个单向关系:对于 Person 1,查询只会拉取匹配的Relationship
对象。person_1_id
如果我想查询 Person 2 的关系,我必须有第二个相同的行,person_1_id
并person_2_id
交换 and 。
这是模型:
class Member extends AppModel {
public $hasMany = array(
'Relationships' => array(
'className' => 'Relationship',
'foreignKey' => 'person_1_id'
)
);
}
class Relationship extends AppModel {
public $belongsTo = array(
'Person1' => array(
'className' => 'Person',
'foreignKey' => 'person_1_id'
),
'Person2' => array(
'className' => 'Person',
'foreignKey' => 'person_2_id'
)
);
}
有什么建议么?当 person_1_id 实际上与 person_2_id 没有分离时,复制关系实体没有逻辑意义。