Для проведения теста иногда приходится заполнить базу данных, причём данные должны выглядеть более-менее как настоящие, а не просто набором букв. Данные можно вводить и в ручную, но это пойдёт, пока их мало. А в противном случае лучше воспользоваться специальным инструментом для заполнения тест данными — фабрикой моделей.
Хоть и при помощи сидов можно создать несколько записей, но фабрика моделей генерирует множество.
Файлы фабрик моделей хранятся в папке database/factories
, и там уже есть один готовый файл UserFactory.php
— фабрика для модели User
. В Laravel 8 вызываемый метод definition()
выглядит так:
public function definition() { return [ 'name' => $this->faker->name, 'email' => $this->faker->unique()->safeEmail, 'email_verified_at' => now(), 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 'remember_token' => Str::random(10), ]; }
Из сидера фабрику можем вызвать так:
public function run() { \App\Models\User::factory(10)->create(); }
Далее запускаем сидер:
php artisan db:seed
Стоит так же отметить, что запускать фабрики мы можем не только из сидов, но и из других мест приложения. Например, из консоли. Для этого, сперва надо войти в tinker
:
php artisan tinker
После полученного приглашения, можно выполнить фабрику:
\App\Models\User::factory(10)->create();
Практика