Блог
Кар'єра
Вакансії Компанії
Навчання
Співбесіди Тестування Відео
Екосистема
Пакети Ресурси
Інше
Події Про нас

Блог

Статті, новини, туторіали та переклади від учасників спільноти

Написати статтю
Увійдіть, щоб продовжити
No results.
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'] // Оновити ці колонки
);