2017-08-10 12 views
0

我有3个互相依赖的表。如何应用级联删除使用型号yii

1st level = partner_company 
2nd level = partner 
3rd level = partner_deals 

第1级有“id”。 第2级具有作为partner_company“id”的外键的“company_id”。 第3级具有作为对方表(第2级)的外键“id”的“partner_id”。

=>现在我想添加任何用户删除公司的功能id = 1然后也从第二级表和第三级公司删除所有记录。

=>如果admin从具有id = 1的伙伴(第2级)中删除记录,则从具有partner_id = 1的partner_deals(第3级)删除记录。

所以任何人都可以帮助我添加此功能。

感谢

+0

请您提供迄今所做的代码。 –

+0

为什么不为数据库本身的关系定义级联删除?或者你没有权利这样做? – Barry

回答

1

您可以覆盖beforeDelete,这样它会先删除依赖的记录。

在你partner_company模型做出有关partner模型

public function getPartner(){ 
    return $this->hasOne(Partner::className(), ['id' => 'company_id']); 
} 

public function beforeDelete() { 
    $this->partner->delete(); 

    // call the parent implementation so that this event is raise properly 
    return parent::beforeDelete(); 
} 

做同样的其他两个型号partnerpartner_deals