在不首先检索模型时创建 Laravel 模型事件监听器

问题描述 投票:0回答:1

在 Laravel 中,您可以注册模型事件,例如:

class User extends Model
{
    protected static function booting(){
        static::creating(function (self $user) {
            $user->is_bald = rand(0,1);
        }
        static::deleting(function (self $user) {
            $user->roles()->delete();
        });
    }
}

所以现在我不必记住在创建/更新/删除/恢复期间处理常见任务...我可以

$user = User::create(['name' => 'Phil']);
$user->delete();

但是,如果我在执行此类事件之前没有返回启动的模型怎么办?

// this just makes a straight up Db call, one database roundtrip
User::whereIn('id',[...])->delete();

Laravel 是否有一种监听 Eloquent 事件的方法,可以绕过首先生成 Model 实例?现在感觉注册一个模型事件只是制造了一种错误的安全感。我想一定有一种 Laravel 风格的方式我只是缺少。

php laravel eloquent
1个回答
0
投票

不,模型尚未实例化时不会触发模型事件。在您提供的示例中,您应该简单地使用 CASCADE 的外键来删除相关记录。

© www.soinside.com 2019 - 2024. All rights reserved.