防止Laravel雄辩模型上的某些积垢操作
有没有一种简单的方法可以防止某些CRUD操作在雄辩的模型上执行 我现在是怎么做的(根据记忆,我认为我缺少了一个与Eloquent的防止Laravel雄辩模型上的某些积垢操作,laravel,laravel-4,eloquent,laravel-5,Laravel,Laravel 4,Eloquent,Laravel 5,有没有一种简单的方法可以防止某些CRUD操作在雄辩的模型上执行 我现在是怎么做的(根据记忆,我认为我缺少了一个与Eloquent的save()兼容的参数,但这并不重要): 雄辩允许您通过 侦听创建、更新、保存或删除事件 从事件回调返回false 例如,为了防止人们创建新的模型对象,如下所示 Foo::creating(function($foo) { return false; //no one gets to create something }); 在你的app/start/glo
save()
兼容的参数,但这并不重要):
雄辩允许您通过
侦听创建、更新、保存或删除事件
从事件回调返回false
例如,为了防止人们创建新的模型对象,如下所示
Foo::creating(function($foo)
{
return false; //no one gets to create something
});
在你的app/start/global.php
文件中可以完成这项工作。除了@AlanStorm的答案,这里还有一个全面的信息:
您可以为所有模型设置全局侦听器:
Event::listen('eloquent.saving: *', function ($model) {
return false;
});
或对于给定型号:
Event::listen('eloquent.saving: User', function ($user) {
return false;
});
// or
User::saving(function ($user) {
return false;
});
// If it's not global, but for single model, then I would place it in boot():
// SomeModel
public static function boot()
{
parent::boot();
static::saving(function ($someModel) {
return false;
});
}
对于只读模型,您只需要一个保存
事件侦听器返回false,然后所有:模型::创建
,$model->save()
,$model->update()
将被拒绝
以下是所有雄辩事件的列表:启动
,启动
,创建
,创建
,保存
,保存
,更新
,删除
,SoftDeletingTrait
提供的deleted
和restored
您可以设置filable字段,并在设置数据库时使其不可为null,这样做违反了许多好的原则。在Laravel 5上,您可以创建FormRequests
Event::listen('eloquent.saving: User', function ($user) {
return false;
});
// or
User::saving(function ($user) {
return false;
});
// If it's not global, but for single model, then I would place it in boot():
// SomeModel
public static function boot()
{
parent::boot();
static::saving(function ($someModel) {
return false;
});
}