Публикации - Laravel

База данных и модели - Фабрики моделей

Для проведения теста иногда приходится заполнить базу данных, причём данные должны выглядеть более-менее как настоящие, а не просто набором букв. Данные можно вводить и в ручную, но это пойдёт, пока их мало. А в противном случае лучше воспользоваться специальным инструментом для заполнения тест данными — фабрикой моделей.

Хоть и при помощи сидов можно создать несколько записей, но фабрика моделей генерирует множество.

Файлы фабрик моделей хранятся в папке 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();

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться


Изображения Видео

1. Подключение CKEditor https://artisansweb.net/install-use-ckeditor-laravel/#comments
2. Регистрация и авторизация https://know-online.com/post/laravel-reg
3. Что нового в Laravel 8 https://sergeymukhin.com/blog/chto-novogo-v-laravel-80
4. Авторизация Sanctum <iframe width="560" height="315" src="https://www.youtube.com/embed/MT-GJQIY3EU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>