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();
});