У меня есть следующая структура:
course
week
Данная week
имеет отношение внешнего ключа к таблице course
.
В моей модели дляcourse
и week
У меня есть действия, которые нужно выполнить, если есть удаление.Это делается с помощью такого подхода в модели:
public static function boot() {
parent::boot();
static::deleted(function($course) {
// do some stuff;
});
}
Когда я удаляю course
в моем бэкэнде с этой строкой:
\App\Course::find($id)->delete();
, он запускает deleted
событие и мой код переходит к вышеуказанной функции deleted
.
С помощью механизма каскадного удаления записи week
для course
также удаляются.Я подтверждаю это в своей базе данных, что записи week
исчезают при удалении course
.
Однако ... Событие week
Model для deleted
не вызывается.
Edit: я с тех пор узнал, что каскадное удаление из базы данных не вызовет события модели в Laravel.Поэтому я попытался выполнить удаление элементов week
вручную в модели course
как
static::deleted(function($course) {
// override any cascade deletes and do it manually
// first delete weeks of this course:
\App\Week::where('course_id', $course->id)->get()->each(function($week) {
$week->delete();
});
});
, что удаляет элементы week
очень хорошо, но событие deleted
для модели week
все еще не сработало, что я нахожу неожиданным ..
Идеи?
Спасибо,
Брайан