Массовая вставка в сидере Laravel
Давайте теперь научимся делать
массовую вставку. Это делается
через передачу в insert
массива массивов - по одному
внутреннему массиву на каждую
строку таблицы.
Давайте посмотрим на примере.
Пусть у нас есть таблица posts
и нужно добавить в неё сразу
три поста. Тогда в run
сидера пропишем:
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class DatabaseSeeder extends Seeder
{
public function run(): void
{
DB::table('posts')->insert([
[
'title' => 'title 1',
'slug' => 'post-1',
'text' => 'text text text 1',
],
[
'title' => 'title 2',
'slug' => 'post-2',
'text' => 'text text text 2',
],
[
'title' => 'title 3',
'slug' => 'post-3',
'text' => 'text text text 3',
],
]);
}
}
?>
Laravel выполнит одну массовую
вставку - быстрее, чем вызывать
insert отдельно для
каждой строки. У каждого внутреннего
массива те же ключи - имена
колонок таблицы.
Вставьте в таблицу с постами
5 записей одним вызовом
insert.
Добавьте 3 юзера
массовой вставкой в сидере.
Дальше - как вынести сидеры в отдельные классы.