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:查找函数执行的操作的主要内容,如果未能解决你的问题,请参考以下文章
在使用 tinker CLI 时,Laravel 如何在 Eloquent 模型上查找和显示动态属性?
Laravel:如何使用 eloquent ORM 查找未经过身份验证的用户的信息?