Наполнение Laravel тестовыми данными

18.01.2020 07:38:23

Часто для тестов и/или демонстрации необходимо создать несколько тестовых записей. И желательно чтобы они был человеко читаемыми, а не набором символов.

Для этого в Laravel есть заводы (Model factory) и пакет Faker

Можно создать свой отдельный завод, но для простоты демонстрации воспользуемся уже готовым.

Внимание: Если у Вас еще нет модели, для которой и будут генерироваться данные, то сначала ознакомиться со статьей.

Открываем файл database/factories/UserFactory.php и добавляем в начало:

 
use App\Post;

и дальше:

 
$factory->define(Post::class, function (Faker $faker) {
    return [
        'title' => $faker->sentence(5),
        'img' => '/uploads/img/gif.gif',
        'text' => $faker->text,
        'published' => $faker->numberBetween(0, 1),
        'category_id' => $faker->numberBetween(1, 10),
        'date' => $faker->date('Y-m-d', 'now'),
    ];
});

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

Подключаемся к серверу по SSH и выполняем:

 
php artisan tinker

После получения приглашения выполняем:

 
factory(App\Post::class, 10)->create()

- где 10, это количество записей которые нужно создать.


Категории: Laravel
Пометки: Model factory Faker Laravel
Яндекс.Метрика