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

Генерация случайной строки в сидере Laravel

Класс Str в Laravel умеет работать со строками. Для сидеров чаще всего нужен его метод random - он создаёт случайную строку из латинских букв и цифр.

Длину строки задают числом в скобках. Строка из десяти символов:

<?php $str = Str::random(10); echo $str; ?>

Строка из двадцати символов:

<?php $str = Str::random(20); echo $str; ?>

При каждом вызове результат другой. Так удобно заполнять заголовки, slug и другие поля, где нужна уникальность, а не осмысленный текст.

Применим в сидере: вставим запись в таблицу posts, а title сгенерируем через 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 { DB::table('posts')->insert([ 'title' => Str::random(10), 'slug' => 'post-1', 'text' => 'text text text', ]); } } ?>

При каждом запуске db:seed в title попадёт новая случайная строка из 10 символов. Чем больше число - тем длиннее результат.

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

php artisan db:seed

Проверьте таблицу в PMA - в колонке title должна быть случайная строка.

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

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

Запустите db:seed два раза. Меняется ли заголовок у новых записей?

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