firstOrCreate()
перевіряє наявність усіх аргументів перед finds
збігом. Якщо не всі аргументи збігаються, буде створено новий екземпляр моделі.
Якщо ви хочете перевірити лише певне поле, використовуйте firstOrCreate(['field_name' => 'value'])
лише один елемент у масиві. Це поверне перший відповідний елемент або створить новий, якщо не знайдено збігів.
Різниця між firstOrCreate()
і firstOrNew()
:
firstOrCreate()
автоматично створить новий запис у базі даних, якщо збіг не знайдено. В іншому випадку це дасть вам відповідний предмет.
firstOrNew()
надасть вам новий екземпляр моделі для роботи, якщо не знайдено збіг, але буде збережений у базі даних лише тоді, коли ви це явно зробите (зателефонувавши save()
до моделі). В іншому випадку це дасть вам відповідний предмет.
Вибір між тим чи іншим залежить від того, що ви хочете зробити. Якщо ви хочете змінити екземпляр моделі, перш ніж вона буде збережена вперше (наприклад, встановлення name
або якогось обов’язкового поля), вам слід скористатися цим firstOrNew()
. Якщо ви можете просто використовувати аргументи, щоб негайно створити новий екземпляр моделі в базі даних, не змінюючи його, ви можете використовувати firstOrCreate()
.