我有两个有关系的模型。
因此,当要删除模型A时,所有相关的模型B也应删除。
我正在使用软删除。
这是我在模型A中的触发器:
protected static function boot()
{
parent::boot();
// Delete Relations
self::deleting(function (Customer $customer) {
$customer->contacts()->delete();
});
}
当我删除模型A时,不会触摸B中的相关模型。所以什么也没发生。
因此触发器不起作用。我没有错误或其他问题。有谁知道我应该如何发现错误?
编辑: 关系看起来像这样:
public function contacts()
{
return $this->hasMany(Contact::class);
}
和
public function customer()
{
return $this->belongsTo(Customer::class);
}
在所有其他使用关系的情况下,它都能正常工作。
答案 0 :(得分:1)
可能您需要更改查询以完成关系构建器,然后删除。更改:
$customer->contacts()->delete();
收件人:
$customer->contacts->delete();
答案 1 :(得分:0)
您必须更改迁移文件
$table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade');
您也可以在删除客户之前先删除联系人
class Customer extends Eloquent
{
public function contacts()
{
return $this->has_many('Contact');
}
public function delete()
{
// delete all related contacts
$this->contacts()->delete();
// delete the customer
return parent::delete();
}
}