我正在审查CodeIgniter Datamapper的所有模型和相应表格。我想知道与定义的父母和孩子建立一对一关系的正确方法是什么。我这样做的方式类似于:
class Customer ... {
public $has_one = array('address');
}
class Address ... {
public $has_one = array('customer');
}
客户是父母(即,有一个或零地址),地址是孩子(总是有一个客户)。在数据库中,我在地址上有一个customer_id,它不是null,索引并与customer.id相关联,并在更新和删除时设置为CASCADE,而客户上的address_id为null,与address.id相关联,并在更新时设置为NO ACTION并删除。
这是CI数据映射器一对一或零(父/子)关系的正确配置吗?
答案 0 :(得分:0)
FAQ section of the docs中有一个很好的解释:
在配置关系时,即使是自我关系,也必须定义关系的两个“边”。这意味着对于父/子关系,您必须在子项上指定父项,并且您必须在父项上指定子项。 这是一个复杂的自我关系的例子[用户(作为Boss)有很多员工,员工有一个老板]:
// In User
$has_one = array(
// define the relationship to the boss
'boss' => array(
'class' => 'user',
'other_field' => 'employee'
)
);
$has_many = array(
// define the relationship to the employees
'employee' => array(
'class' => 'user',
'other_field' => 'boss'
)
);