sí, pero como @supersan declaró arriba en un comentario, si elimina () en un QueryBuilder, el evento del modelo no se activará, porque no estamos cargando el modelo en sí, y luego llamando a delete () en ese modelo.
Los eventos se activan solo si utilizamos la función de eliminación en una instancia de modelo.
Entonces, este beeing dijo:
if user->hasMany(post)
and if post->hasMany(tags)
para eliminar las etiquetas de publicación al eliminar el usuario, tendríamos que repetir $user->posts
y llamar$post->delete()
foreach($user->posts as $post) { $post->delete(); }
-> esto activará el evento de eliminación en la publicación
VS
$user->posts()->delete()
-> esto no activará el evento de eliminación en la publicación porque en realidad no cargamos el modelo de publicación (solo ejecutamos un SQL como: DELETE * from posts where user_id = $user->id
y, por lo tanto, el modelo de publicación ni siquiera se carga)
first()
a la consulta para poder acceder al evento modelo, por ejemplo,User::where('id', '=', $id)->first()->delete();
Fuente