Php Laravel深嵌套关系删除查询

Php Laravel深嵌套关系删除查询,php,laravel,Php,Laravel,我有4个相互关联的模型。。 第一款: 学校: 第二款: 联系人: public function addresses() { return $this->belongsToMany(Address::class, 'address_contact_person', 'contact_person_id', 'address_id'); } 第三款: 地址: 第四种型号:透视表 AddressContactPerson: 现在的问题是。。 我想在删除

我有4个相互关联的模型。。 第一款: 学校:

第二款: 联系人:

  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');