Laravel - 型号ID防护

时间:2017-10-21 10:12:17

标签: php laravel eloquent laravel-eloquent

假设我们有一个主题提交html表单,它使用以下输入字段名称:

name
text

在控制器级别,我们可能写了这样的内容:

public function create(Request $request) {
   // Validation logic ...
   Topic::create($request->all());
}

如果客户端用户添加id输入字段,该怎么办:

id
name
text

Laravel是否还会填充新Model对象的id字段? 我可以保护模型的id,还是应该使用$request->only()

2 个答案:

答案 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包含永远不应该进行质量分配的内容。

https://laravel.com/docs/5.5/eloquent#mass-assignment

的更多信息