Php Laravel深嵌套关系删除查询
我有4个相互关联的模型。。 第一款: 学校: 第二款: 联系人:Php Laravel深嵌套关系删除查询,php,laravel,Php,Laravel,我有4个相互关联的模型。。 第一款: 学校: 第二款: 联系人: public function addresses() { return $this->belongsToMany(Address::class, 'address_contact_person', 'contact_person_id', 'address_id'); } 第三款: 地址: 第四种型号:透视表 AddressContactPerson: 现在的问题是。。 我想在删除
public function addresses()
{
return $this->belongsToMany(Address::class, 'address_contact_person', 'contact_person_id', 'address_id');
}
第三款:
地址:
第四种型号:透视表
AddressContactPerson:
现在的问题是。。
我想在删除联系人时删除我的地址和地址联系人记录。我试图触发删除事件,但未能成功。事件没有被触发。。
我必须从学校模型中删除这些记录。。
$school->contactpersons()->delete();
我在每种型号上都有软件删除。
这将只删除联系人记录,而不是“地址”和AddressContactPerson表。在您的架构中,您应该有一个外键,然后设置onDelete(“级联”)。 大概是这样的:
$table->biginteger('user_id')->unsigned()->index();
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
这回答了你的问题吗?没有。。我确实看了,但它对我没有帮助。。当我删除学校时,它会删除联系人,但不会进一步删除地址和地址联系人表。。。这就是我要找的。。找不到方法。能否显示更多代码。在哪个模型中,您建立了什么关系?当contactperson模型没有任何与地址表相关的id时,我应该如何在其上分配外键?在您的模型中,您应该有一个delete()函数,在该函数中,您可以对您的关系调用delete()函数。例如,如果您有一个用户模型,当您删除一个用户时,您希望删除所有关联的关系,您应该尝试这样的操作:
public function delete(){DB::transaction(function(){$this->yourRelationship()->delete();parent::delete();});
AddressContactPerson:
$table->biginteger('user_id')->unsigned()->index();
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');