在 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 风格的方式我只是缺少。
不,模型尚未实例化时不会触发模型事件。在您提供的示例中,您应该简单地使用 CASCADE 的外键来删除相关记录。