所有的Eloquent模型预设会防止批量赋值,所以需要在Model中设置fillable和guarded属
注意:新增字段时,要在此加入。
代码语言:javascript复制protected $fillable = ['name'];
protected $guarded = ['password'];
fillable为白名单,表示该字段可被批量赋值;guarded为黑名单,表示该字段不可被批量赋值。
为所有属性设置白名单:
代码语言:javascript复制protected $fillable = ['*']
可为所有属性设置黑名单:
代码语言:javascript复制protected $guarded = ['*'];
laravel的create方法为批量赋值,save方法为逐个手动赋值,需要注意的是,fillable 与 guarded 只限制了 create 方法,而不会限制 save。
create 通常是使用 request 中的所有请求参数来创建对象,而 save 则是一个字段一个字段的手动赋值,所以 create 有可能会恶意加入不应该插入的字段,例如 is_admin。