3.2.2 - 普通 - 未处理
A表关联B表,关系为HAS_MANYB表关联C表,关系为HAS_MANY
如:部门表关联员工表,员工表关联考勤表
现在删除部门,则对应的员工删除,员工对应的考勤记录删除
实现如下:
A表模型继承RelationModel,并配置好li
protected $_li
'test'=>array(
"mapping_type"=>self::HAS_MANY,
"class_name"=>"B",
"foreign_key"=>"a_id",
"mapping_name"=>"b_list"
)
);
B表模型继承RelationModel,并配置好li
protected $_li
'test'=>array(
"mapping_type"=>self::HAS_MANY,
"class_name"=>"C",
"foreign_key"=>"b_id",
"mapping_name"=>"c_list"
)
);
C表模型继承Model
在A模型中重写delete方法
public function delete($options=array())
{
$this->relation(array('b_list'));
return parent::delete($options);
}
在B模型中重写delete方法
public function delete($options=array())
{
$this->relation(array('c_list'));
return parent::delete($options);
}
在C模型中delete方法不做重写
按照设计规则应该是
D("A")->where("id=1")->delete();
将删除A和关联的B,和B关联的C中所有记录,但是实验结果是只能删除掉关联的B中记录,而C中关联的记录不能被删除,这个应该是不正确的,使用起来不方便
