Laravel - 模型 ID 保护
Laravel - Model ID guarding
假设我们有一个主题提交 html 表单,它使用以下输入字段名称:
name
text
在controller层面我们可能是这样写的:
public function create(Request $request) {
// Validation logic ...
Topic::create($request->all());
}
如果客户端用户添加 id
输入字段会怎样:
id
name
text
Laravel 是否也会填充新模型对象的 id
字段?
我可以保护模型的id
,还是应该使用$request->only()
?
您不需要使用 $fillable
数组或 $guarded
作为主键,默认情况下是 id
。当您使用 create()
方法时,Eloquent 不会填充主键。
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
假设我们有一个主题提交 html 表单,它使用以下输入字段名称:
name
text
在controller层面我们可能是这样写的:
public function create(Request $request) {
// Validation logic ...
Topic::create($request->all());
}
如果客户端用户添加 id
输入字段会怎样:
id
name
text
Laravel 是否也会填充新模型对象的 id
字段?
我可以保护模型的id
,还是应该使用$request->only()
?
您不需要使用 $fillable
数组或 $guarded
作为主键,默认情况下是 id
。当您使用 create()
方法时,Eloquent 不会填充主键。
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