Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pplrPmGdLF 153 of 252 menu
◀ ▶

Много записей через цикл for в сидере Laravel

Иногда таблицу нужно наполнить не одной записью, а десятками - посты для проверки списка, пользователи для фильтра. Строки похожи по структуре, но значения в каждой свои: свой заголовок, свой slug, своя случайная строка.

Прописывать такие данные по одной или собирать длинный массив для массовой вставки неудобно. Проще описать правило один раз и выполнить его нужное число раз. Для этого в PHP используют цикл for.

Цикл for повторяет блок кода заданное количество раз. Сначала разберём его устройство - без базы, чтобы было видно, как считаются повторения:

<?php namespace Database\Seeders; use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { public function run(): void { for ($i = 0; $i < 5; $i++) { // тело цикла } } } ?>

Переменная $i начинается с 0 и растёт, пока меньше 5. Значит, тело выполнится ровно пять раз - при $i равных 0, 1, 2, 3, 4. Число итераций меняют в условии: для десяти повторений пишут $i < 10.

Теперь поместим в тело цикла insert. На каждом проходе Laravel выполнит отдельную вставку в таблицу, а Str::random вернёт новое значение:

<?php namespace Database\Seeders; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; class DatabaseSeeder extends Seeder { public function run(): void { for ($i = 0; $i < 3; $i++) { DB::table('posts')->insert([ 'title' => Str::random(10), 'slug' => Str::random(10), 'text' => Str::random(50), ]); } } } ?>

После db:seed в таблице posts появятся три строки. У каждой свой набор случайных полей - так не получилось бы с одной массовой вставкой и одним Str::random на все записи.

Переменную $i можно использовать в данных - например, добавить номер к slug. Пока достаточно простого повторения insert.

Выполним команду на вставку:

php artisan db:seed

Сделайте сидер, который добавит в базу несколько постов со случайными полями через цикл.

Сколько раз выполнится тело цикла при $i < 10?

Зачем цикл удобнее массовой вставки, если каждая строка должна быть случайной?

Проверьте в PMA: сколько строк добавилось?

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить