当前位置: 首页 > 面试题库 >

Laravel中的“质量分配”是什么意思?

公良鸿禧
2023-03-14
问题内容

当我阅读有关雄辩的ORM主题部分的Laravel文档时,我有了一个新名词Mass Assignment

文档显示如何进行批量分配和fillableguarded属性设置。但是在经历了这些之后,我Mass Assignment对它及其工作方式没有一个清晰的了解。

根据我过去在CodeIgniter中的经验,我也没有听说过这个词。

有人对此有一个简单的解释吗?


问题答案:

质量分配是将数组发送到模型创建时,基本上是一次在模型上设置一堆字段,而不是一个接一个地设置,例如:

$user = new User(request()->all());

(这不是在模型上分别显式设置每个值。)

您可以fillable用来保护您希望此字段实际允许更新的字段。

您还可以通过执行以下操作来阻止所有字段可批量分配:

protected $guarded = ['*'];

假设在您的用户表中,您有一个字段,user_type并且可以包含user / admin的值

显然,您不希望用户能够更新此值。从理论上讲,如果您使用上述代码,则有人可以在表单中注入新字段user_type并与其他表单数据一起发送“
admin”,并轻松地将其帐户切换为admin帐户……这是一个坏消息。

通过添加:

$fillable = ['name', 'password', 'email'];

您要确保只有这些值可以使用更新 mass assignment

为了能够更新user_type值,您需要在模型上显式设置并保存它,如下所示:

$user->user_type = 'admin';
$user->save();


 类似资料:
  • 问题内容: 在查看在线源代码时,我在几个源文件的顶部遇到了这个问题。 但是我不知道该怎么办。 我知道等于,我认为表示类似“如果它已经存在,请使用其值,否则请使用新对象。 为什么我会在源文件的顶部看到它? 问题答案: 您对的意图的猜测非常接近。 当在文件顶部看到该特定模式时,该模式用于创建 名称空间 (即命名对象),在该 命名空间 下可以创建函数和变量,而不会过度污染全局对象。 究其原因 ,为什么

  • 我最近读了一篇关于方程组的复杂黑客的文章,冒烟的枪是一个常数,也出现在JDK 8源代码中,例如。ThreadLocal.java HASH_INCREMENT常数的意义是什么,它是如何提高性能的?

  • 我不明白JMH结果的分数属性?我也没在网上找到任何关于它的东西。 有人能告诉我,这是关于什么的吗?据我所知,高分比低分好,但这到底是什么意思,是如何计算的?

  • 问题内容: 我一直在PHP中看到该变量,但我不知道它的用途。我从来没有亲自使用过它。 有人可以告诉我该变量在PHP中如何工作吗? 问题答案: 它是对当前对象的引用,在面向对象的代码中最常用。 例: 这会将’Jack’字符串存储为所创建对象的属性。

  • 连字符库似乎是在应用程序中使用连字符的一种非常流行和免费的方式。 断字向量是什么意思? 我正在运行库源代码附带的示例。输出示例: 矢量中的奇数表示连字点。但所有这些价值观意味着什么?

  • 问题内容: Netbeans给我警告: 从未使用分配的变量 这是什么意思? 问题答案: 这意味着在给该变量赋值之后,您不会对该变量执行任何操作。例如,您不会返回它,使用它执行计算,将它传递给方法或其他任何方法。这基本上意味着在为变量分配值后尚未使用该变量。