I have two models, Show
and Episode
, with a one to many relationship. I have an Observer for each model to watch when they are deleted and do some tasks. If my ShowObserver
looks like this everything works properly and cascades down, the EpisodeObserver
fires its deleting()
method for each Episode
that is deleted along with the show:
<?php
/**
* Listen to the Show deleting event.
*
* @param Show $show
* @return void
*/
public function deleting(Show $show)
{
if ($show->isForceDeleting()) {
foreach ($show->episodes()->onlyTrashed()->get() as $episode) {
$episode->forceDelete();
}
} else {
$show->episodes()->delete();
}
}
However, if I change it to looks like this the EpisodeObserver@deleting()
methods never fire even though the Episode
s do get forceDeleted:
<?php
/**
* Listen to the Show deleting event.
*
* @param Show $show
* @return void
*/
public function deleting(Show $show)
{
if ($show->isForceDeleting()) {
$show->episodes()->onlyTrashed()->forceDelete();
} else {
$show->episodes()->delete();
}
}
Is there something about $show->episodes()->onlyTrashed()->forceDelete();
that is incorrect, or is this potentially a bug?