Laravel 4.2 强制对 createOrUpdate 和类似方法进行质量分配?

Posted

技术标签:

【中文标题】Laravel 4.2 强制对 createOrUpdate 和类似方法进行质量分配?【英文标题】:Laravel 4.2 force mass assignment on createOrUpdate and similar methods? 【发布时间】:2016-05-14 10:52:07 【问题描述】:

我已经研究了一段时间的 API,它具有一种“软”API 验证,因此我可以在前端更轻松地使用 Backbone。基本上,设计原则一直只验证和更新我们关心的发回的属性。在后端,我在验证输入数组后使用模型的可填充数组来限制它。这样,当人们不小心发回我们不允许他们触摸的模型数据时,我们就不必惹恼他们,因为文档清楚地说明了什么是可填充的。人们似乎很喜欢使用 API。

我们遇到了一个问题,因为我们想对自动创建或更新模型的后端使用诸如“createOrUpdate”之类的东西。基本上,我们最终会向可填充对象添加不符合我们面向用户的输入验证的内容。在文档中跋涉,我遇到了“forceFill”和其他各种“强制”方法,但注意到它们在“createOrUpdate”等更神奇的方法中丢失了。似乎它们应该是方法,或者至少是可以传递给强制方法的布尔标志,也许这些选项内置在 Laravel 5+ 中?

在我继续在基础中编写自己的方法之前,我只是想问一下这是否已经内置到 4.2 中而我只是想念它?我也想创建这个线程,因为它可能对那些仍然对 Laravel 的批量分配如何工作感到困惑的人有用。

如果我没有收到任何反馈,我可能会删除它。

【问题讨论】:

***.com/questions/29519127/… 【参考方案1】:

Model::unguard(); 在 5.1 中添加 https://laravel.com/docs/5.1/seeding 在 4.2 中可用。

您只需在创建对象之前调用它,然后您可以使用createOrUpdate()firstOrNew()create() 等填充任何字段。

更正,这里是 L4.2 API:https://laravel.com/api/4.2/Illuminate/Database/Eloquent/Model.html#method_unguard

另请参阅:Model::reguard()

【讨论】:

当我开始编写这些自定义方法时,我注意到了这些方法。由于我在让他们工作时遇到了一些麻烦,所以我会试一试。 工作就像一个魅力。再次感谢!

以上是关于Laravel 4.2 强制对 createOrUpdate 和类似方法进行质量分配?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4.2 尝试使结帐 HTTPS 导致 NotFoundHttpException

如何获取 assertResponseOk 的状态 - laravel 4.2 测试

如何强制 Laravel 项目对所有路由使用 HTTPS?

同一服务器上的 Laravel 4.2 环境

Composer - Forked Laravel 4.2 未安装

找不到类“PushManager”-Laravel 4.2