Конкатенация строк в сидере Laravel
Метод Str::random даёт набор
случайных букв. Для email,
slug или домена часто нужен
другой формат: случайная часть
плюс неизменный префикс
или суффикс. Для решения проблемы
генерируют часть строки, а вторую неизменную часть
склеивают через
конкатенацию.
Давайте посмотрим на примере.
Поле email должно содержать
символ @ и домен.
Случайные буквы без @
в базе выглядят неправдоподобно
и могут ломать проверки формата.
Сгенерируем локальную часть
случайно, а @example.com
добавим вручную.
Вставим одного пользователей с такими email:
<?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 < 10; $i++) {
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(5) . '@example.com',
]);
}
}
}
?>
Выполним команду на вставку:
php artisan db:seed
Сделайте сидер, который добавит в базу случайные имена доменов.
Сделайте сидер, который добавит
в базу случайные email так,
чтобы случайным было и то,
что перед @, и то,
что после.
Сделайте сидер, который добавит
в базу случайные имена файлов
картинок с расширением
.jpg.
Сделайте сидер, который добавит
в базу случайные пути
к изображениям в папке
/storage/photos/.
Сделайте сидер, который добавит
в базу посты со случайными
slug, начинающимися
с post-.
Сделайте сидер, который добавит
в базу товары со случайными
артикулами, начинающимися
с SKU-.
Сделайте сидер, который добавит
в базу пользователей
с invite-кодами, начинающимися
с INV-.