Генерация случайной строки в сидере 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
два раза. Меняется ли
заголовок у новых записей?