Events 拉威尔4。模型事件不受集合的影响

Events 拉威尔4。模型事件不受集合的影响,events,laravel,relationships,Events,Laravel,Relationships,我不是拉威尔方面的专家,模型事件对我来说有点混乱。我要做的是删除一条记录,然后在“删除”模型事件中删除任何相关模型。奇怪的是,事情就是这样发生的: public static function boot() { parent::boot(); static::deleting( function ($post) { $post->comments()->delete(); } } 这样做时,不会调用Comment::deleting(

我不是拉威尔方面的专家,模型事件对我来说有点混乱。我要做的是删除一条记录,然后在“删除”模型事件中删除任何相关模型。奇怪的是,事情就是这样发生的:

public static function boot()
{
    parent::boot();
    static::deleting(
    function ($post) {
        $post->comments()->delete();
    }
}
这样做时,不会调用Comment::deleting(我需要真正调用此事件)。但是看看这个(这个块有效)

现在调用了Comment::deleting,我认为使用集合“comments()”并调用“delete()”等同于这个foreach并调用每个model delete()方法,但我错了

这是预期的行为吗?我误解了什么

提前谢谢

==更新(谢谢@dezko)===

$post->comments()是hasMany关系 $post->comments是一个集合

所以

成功了吗


谢谢

$post->comments()
不是一个集合,而是一个
有许多
(关系)对象,它使用
Query\Builder
delete()
方法,不调用事件。这是收藏:
post->comments
,但您仍然需要循环。谢谢@deczo。更新问题
public static function boot()
{
    parent::boot();
    static::deleting(
    function ($post) {
        foreach($post->comments as $comment) {
            $comment->delete();
        }
    }
}
$post->comments->each(function($comment)
{
    $comment->delete();
});