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

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

firstOrCreate
firstOrNew
updateOrCreate

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

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

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

【问题讨论】:

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

标签: database laravel orm model eloquent


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-06-23
      • 2020-12-17
      • 2019-04-27
      • 2011-01-17
      • 2014-06-20
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多