假设我们有一个主题提交html表单,它使用以下输入字段名:
name
text在控制器级别,我们可能编写了如下内容:
public function create(Request $request) {
// Validation logic ...
Topic::create($request->all());
}如果客户端用户添加了一个id输入字段,该怎么办:
id
name
textLaravel是否也会填充新模型对象的id字段?我可以保护模型的id吗?还是应该使用$request->only()?
发布于 2017-10-21 10:15:11
您不需要对主键使用$fillable数组或$guarded,这在默认情况下是id。在使用create()方法时,雄辩器不会填充主键。
发布于 2017-10-21 10:21:25
Laravel有两种实现这一目标的方法:
class Topic extends Model {
protected $fillable = [
"name" , "text"
];
}另外,也有相反的情况:
class Topic extends Model {
protected $guarded = [ "id" ];
} $fillable包含模型中允许大量分配的内容(通过填充或构造函数等),而$guarded包含不应该大量分配的内容。
更多信息请访问https://laravel.com/docs/5.5/eloquent#mass-assignment
https://stackoverflow.com/questions/46862192
复制相似问题