2015-05-14 61 views
1

我的问题涉及Laravel雄辩ORM中的一些方法。特别是,3种方法已经引起了我的注意:Laravel雄辩:按功能查找动作

firstOrCreate 
firstOrNew 
updateOrCreate 

我清楚地明白这些方法,但没有找到一个方法来确定哪些操作要求他们之后进行。

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

同样,如果在firstOrNew的情况下以及在updateOrCreate的情况下更新或创建了对象,如何找出是否在数据库中创建或找到了对象。

+1

为什么你需要这些信息?这些函数是通常写入代码的快捷方式。如果您需要确定哪一个实际运行了,那么您可能想要查找是否返回了任何内容 –

回答

0

前提条件是您为这些表打开了时间戳,您只需在返回的对象中检查其值即可。

0

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

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

这应该让你在你提到的所有情况之间消除歧义。