У меня есть две модели с отношениями.
Поэтому, когда модель A будет удалена, все связанные модели B также должны быть удалены.
Я работаю с мягким удалением.
Вот мой триггер в модели А:
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);
}
Во всех других случаях, когда я использую отношение, оно работает нормально.
Как вы удаляете Модель А?
$customer->delete();Можете ли вы привести минимальный пример, чтобы воспроизвести проблему?






Возможно, вам нужно изменить свой запрос, чтобы завершить построитель отношений, а затем удалить. Изменять:
$customer->contacts()->delete();
к:
$customer->contacts->delete();
Спасибо. Я изменил свой код, но проблема все та же :(
Можете ли вы опубликовать ваши модельные отношения, пожалуйста.
Вы пробовали static::deleting вместо self::deleting?
@Маркус Ты пробовал static::deleted вместо static::deleting?
Независимо от того, использую ли я удалённый или удалённый. Та же проблема
Вы должны изменить свой файл миграции
$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();
}
}
Вы ищете что-то подобное? stackoverflow.com/questions/14174070/…