Часто для тестов и/или демонстрации необходимо создать несколько тестовых записей. И желательно чтобы они был человеко читаемыми, а не набором символов.
Для этого в Laravel есть заводы (Model factory) и пакет Faker
Есть отдельная статья для Laravel 6 и 7
Внимание: Если у Вас еще нет модели, для которой и будут генерироваться данные, то сначала ознакомиться со статьей.
Для начала нужно сдать фабрику:
php artisan make:factory PostFactory --model=Post
В ней будем задать какие поля и как нужно заполнять фейкеру:
<?php
namespace Database\Factories;
use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;
class PostFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Post::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'title' => $this->faker->sentence(5),
'img' => '/img/blank.jpg',
'text' => $this->faker->text,
'published' => $this->faker->numberBetween(0, 1),
'category_id' => $this->faker->numberBetween(1, 10),
'date' => $this->faker->date('Y-m-d', 'now'),
];
}
}
Есть несколько способов как можно запустить создание тестовых записей, мы рассмотреть самый простой - запуск через tinker (шел для выполнения php кода):
Затем, , после получения приглашения, выполняем:
App\Models\Post::factory()->count(10)->create();
- где 10, это количество записей которые нужно создать.
Более подробно можно ознакомиться на странице документации Laravel 8: database testing