假设我们有一个主题提交html表单,它使用以下输入字段名称:
name
text
在控制器级别,我们可能写了这样的内容:
public function create(Request $request) {
// Validation logic ...
Topic::create($request->all());
}
如果客户端用户添加id
输入字段,该怎么办:
id
name
text
Laravel是否还会填充新Model对象的id
字段?
我可以保护模型的id
,还是应该使用$request->only()
?
答案 0 :(得分:1)
默认情况下,您不需要使用$fillable
数组或$guarded
作为主键id
。当您使用create()
方法时,Eloquent不会填充主键。
答案 1 :(得分:1)
Laravel有两种实现方法:
class Topic extends Model {
protected $fillable = [
"name" , "text"
];
}
或者相反:
class Topic extends Model {
protected $guarded = [ "id" ];
}
$fillable
包含允许在模型中进行质量分配的内容(通过填充或构造函数等),$guarded
包含永远不应该进行质量分配的内容。