2015-05-14 6 views
1

Мой вопрос касается нескольких методов в Laravel Eloquent ORM. В частности, 3 методы привлекли мое внимание:Laravel Eloquent: Найти действие, выполняемое по функции

firstOrCreate 
firstOrNew 
updateOrCreate 

Я четко понимаю, что эти методы, но не нашел способ, чтобы определить, какая операция была выполнена после их вызова.

Например, после вызова firstOrCreate, как определить, найдена модель в базе данных или создана? Сначала я могу запустить запрос на поиск, а затем создать запись, если она не была найдена, но это было бы очень неэффективно.

Аналогичным образом, как узнать, был ли объект создан или найден в базе данных в случае firstOrNew, и если объект был обновлен или создан в случае updateOrCreate.

+1

Зачем вам эта информация? Эти функции являются ярлыками для кода, который обычно записывается в любом случае. Если вам нужно определить, какой из них был фактически запущен, вы, вероятно, захотите найти и увидеть, если что-либо возвращается –

ответ

0

Если у вас есть отметки времени для этих таблиц, вы можете просто проверить их значения в возвращаемом объекте.

0

Свойство «существует» вернет true, если модель поддерживается базой данных (false, если произошло «новое»).

Свойство isRecentlyCreated вернет true, если запись была только что создана (false, если она уже существует).

Это должно позволить вам устранить неоднозначность между всеми упомянутыми вами случаями.

Смежные вопросы