relation关联删除问题

浏览:886 发布日期:2014/08/07
3.2.2 - 普通 - 未处理
A表关联B表,关系为HAS_MANY

B表关联C表,关系为HAS_MANY

如:部门表关联员工表,员工表关联考勤表

现在删除部门,则对应的员工删除,员工对应的考勤记录删除

实现如下:

A表模型继承RelationModel,并配置好link参数

protected $_link = array(
'test'=>array(
"mapping_type"=>self::HAS_MANY,
"class_name"=>"B",
"foreign_key"=>"a_id",
"mapping_name"=>"b_list"
)
);

B表模型继承RelationModel,并配置好link参数

protected $_link = array(
'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中关联的记录不能被删除,这个应该是不正确的,使用起来不方便





评论(
后面还有条评论,点击查看>>