Laravel Eloquent:查找函数执行的操作

Posted

技术标签:

【中文标题】Laravel Eloquent:查找函数执行的操作【英文标题】:Laravel Eloquent: Find Action Performed By Function 【发布时间】:2015-07-26 02:45:33 【问题描述】:

我的问题涉及 Laravel Eloquent ORM 中的一些方法。特别是,有 3 种方法引起了我的注意:

firstOrCreate
firstOrNew
updateOrCreate

我清楚地了解这些方法的作用,但在调用它们后没有找到确定执行哪个操作的方法。

例如,调用firstOrCreate后,如何判断模型是在数据库中找到的还是创建的?我可以先运行查找查询,如果没有找到则创建记录,但效率非常低。

类似地,在firstOrNew 的情况下,如何确定对象是否已在数据库中创建或找到,以及在updateOrCreate 的情况下,对象是否已更新或创建。

【问题讨论】:

为什么需要这些信息?这些函数是通常编写的代码的快捷方式。如果您需要确定实际运行的是哪一个,您可能希望找到并查看是否返回任何内容 【参考方案1】:

如果您为这些表打开了时间戳,您可以简单地在返回的对象中检查它们的值。

【讨论】:

【参考方案2】:

如果模型由数据库支持,“exists”属性将返回 true(如果发生“new”,则返回 false)。

如果记录刚刚创建,“wasRecentlyCreated”属性将返回 true(如果它已经存在,则返回 false)。

这应该可以让您消除您提到的所有案例之间的歧义。

【讨论】:

以上是关于Laravel Eloquent:查找函数执行的操作的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent 查找日期超过 2 天的行

Laravel Eloquent:返回数组键作为字段 ID

在使用 tinker CLI 时,Laravel 如何在 Eloquent 模型上查找和显示动态属性?

Laravel:如何使用 eloquent ORM 查找未经过身份验证的用户的信息?

Laravel Eloquent 关系 - 3 个表,其中一个是查找表

编写 Eloquent Query 以查找得票最多的帖子 Laravel