我正在阅读 Eloquent 文档,在那里我谈到了帖子请求的批量分配主题。
所以,现在我脑子里有两个问题指向一个问题。
1-批量分配有什么好处?
2-我们不应该在哪里使用批量分配?
我正在阅读 Eloquent 文档,在那里我谈到了帖子请求的批量分配主题。
所以,现在我脑子里有两个问题指向一个问题。
1-批量分配有什么好处?
2-我们不应该在哪里使用批量分配?
批量分配的好处,主要是编写更少的代码。它在执行时并没有更快......
而且它绝对不如常规的旧插入更新安全。因为它将用户输入盲目地传递到模型中。
我避免使用它,事实上从未真正找到合适的时间来实际使用它。
就我个人而言,我发现 Mass-assignment 非常有用,因为它不仅可以帮助您保护敏感字段无需检查即可填写,例如密码和 ID,而且还可以帮助您快速为非敏感字段分配值。
批量分配如何保护敏感字段:
它不会向您未提及的字段填充/分配值以在protected $fillable property
.
例如,您有一个User model with fields id, first_name, last_name, email, password.
您可以将值分配first_name, last_name, email
给如下所示:
$user = new User;
$user->first_name = Input::get('first_name');
$user->last_name = Input::get('last_name');
$user->email = Input::get('email');
$user->save();
上面的方法是可以接受的,但是如果你有更多的字段呢?这就是大规模分配的用武之地。您可以通过以下方式进行:
$user = new User;
$user->fill(Input::all());
$user->save();
但是在使用批量分配之前,您应该确保要批量分配的字段保存在模型的受保护 $fillable 属性中,如下所示,否则您将获得批量分配异常:
protected $fillable = ['first_name', 'last_name', 'email'];
注意:password
在您的protected $fillable
财产中包含敏感字段会很危险。更好的是您应该在protected $guarded
属性中添加敏感字段,如下所示:
protected $guarded = ['id', 'password'];