明确定义$ guarded = ['id']以防止意外插入?

Jus*_*Moh 2 php laravel eloquent laravel-5 laravel-5.1

假设我想将以下逻辑应用于我的所有Model类:

所有具有自动增量ID的Model类都应具有 protected $guarded = ['id']

这样我就不会意外地插入增量id.

在Laravel 5中有意义吗?
除了protected $guarded = ['id']在每个Model类中设置之外,我还有其他方法可以实现吗?

Tho*_*Kim 8

如果您按照接受的答案,您仍然可以手动设置id,实际上,我实际上会说答案会使您的应用程序的安全性变得更糟.

Laravel默认情况下保护所有内容:

protected $guarded = ['*'];

因此,没有必要指定它id何时已被保护.当你覆盖那个属性时,你告诉Laravel,"实际上,不要保护一切.只保护我指定的属性." 所以基本上,你是无意识的其他财产.

此外,如果您手动分配这样的属性:

$model = new Model;
$model->id = 1;
$model->name = 'Example';
$model->save();
Run Code Online (Sandbox Code Playgroud)

$guarded/ $fillable性能从来没有踢.他们踢当你使用类似的方法create,update,fill,等.