我有一个包含列 id、名称和parentid 的表
模型中的关系函数:
'location_parent' => array(self::BELONGS_TO, 'Location', 'parentid'),
'location_children' => array(self::HAS_MANY, 'Location', 'parentid', 'order' => 'id ASC'),
删除控制器中的操作:
public function actionDelete($id)
{
$this->loadModel($id)->delete();
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if(!isset($_GET['ajax']))
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}
要求:
在这里,如果我删除记录id = 1
,然后行parentid = 1
也需要删除。
在你的模型中覆盖beforeDelete
在删除父记录之前递归删除所有子记录的方法,即
public function beforeDelete(){
foreach($this->location_children as $c)
$c->delete();
return parent::beforeDelete();
}
请务必将初始删除调用包装在事务中,以确保删除所有记录或不删除任何记录。
你也可以只使用CDbCommand
来执行删除操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)