质量分配有哪些好处,不应该使用它?

时间:2013-07-04 16:34:59

标签: php laravel eloquent mass-assignment

我正在阅读Eloquent文档,其中我谈到了邮件请求的批量分配主题。

所以,现在有两个问题在我的脑海中指向一个点。

1-批量转让有什么好处?
2-我们不应该使用批量分配?

2 个答案:

答案 0 :(得分:3)

大规模分配的好处,主要是编写较少的代码。 它在执行时没有任何更快的速度......

它肯定不如常规旧的Insert,Update更安全。 因为它将用户输入盲目地传递到模型中。

我避免使用它,事实上从来没有真正找到适当的时间来实际这样做。

答案 1 :(得分:0)

就我个人而言,我发现Mass-assignment非常有用,因为它不仅可以帮助您保护敏感字段无需检查即可填写,如密码和ID,还可以帮助您快速为非敏感字段分配值。 / p>

Mass-Assign如何保护敏感字段 它不会将值填充/分配给您未在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属性中,如下所示,否则你将获得质量分配异常:< / p>

protected $fillable = ['first_name', 'last_name', 'email'];

注意:password媒体资源中加入protected $fillable等敏感字段会很危险。更好的是你应该在protected $guarded属性中添加敏感字段,如下所示:

protected $guarded = ['id', 'password'];