Laravel Model 的 fillable (白名单)与 guarded (黑名单)

Posted 心之所依

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel Model 的 fillable (白名单)与 guarded (黑名单)相关的知识,希望对你有一定的参考价值。

例如

protected $fillable = [‘name‘];
protected $guarded = [‘price‘];

定义了 name 字段可以写入/修改,而 price 字段不可以。

需要注意的是,fillable 与 guarded 只限制了 create 方法,而不会限制 save。

我觉得 Laravel 这样设计的原因是,create 通常是使用 request 中的所有请求参数来创建对象,而 save 则是一个字段一个字段的手动赋值,所以 create 有可能会恶意加入不应该插入的字段,例如 is_admin。基于此,create 还是需要有 fillable, guarded 来过滤一层比较安全。

以上是关于Laravel Model 的 fillable (白名单)与 guarded (黑名单)的主要内容,如果未能解决你的问题,请参考以下文章

模型中的 Laravel 动态可填充

laravel报错:MassAssignmentException

Laravel 5.3 $model->save() 值始终为空,但是批量分配有效

laravel-admin 更新数据失败

如何获取每个团队的结果 laravel

Laravel:在视图内部调用模型函数