Tips
15 червня 2026
insert() vs create() - масові операції правильно
При створенні 1,000 записів в циклі? Кожен create() звертається до бази окремо.
insert() надсилає всі записи одним запитом. В 100 разів швидше.
Компроміс:
create()запускає події, заповнює timestamps, повертає модельinsert()пропускає все, просто сирий SQL insert
Коли використовувати insert():
- Заповнення бази даних
- Імпорт великих наборів даних
- Фонові пакетні jobs
Порада: Використовувати upsert() для масових операцій insert-or-update в Laravel 8+.
// ПОГАНО: 1000 окремих запитів
foreach ($records as $record) {
User::create($record); // Повільно
}
// ДОБРЕ: Один запит для всіх
User::insert($records);
// З timestamps
$now = now();
$records = collect($records)->map(function ($record) use ($now) {
return array_merge($record, [
'created_at' => $now,
'updated_at' => $now,
]);
})->toArray();
User::insert($records);
// Upsert - вставити або оновити
User::upsert(
[
['email' => 'john@example.com', 'name' => 'John'],
['email' => 'jane@example.com', 'name' => 'Jane'],
],
['email'], // Унікальна колонка
['name'] // Оновити ці колонки
);