Сидеры и фабрики моделей

Для автоматического наполнения базы данных контетом для тестироваия используются сидеры и фабрики моделей.

Файлы фабрик моделей находятся в папке database/factories. Они могут создаваться либо вместе с моделью, либо отдельно.

Пример кода фабрики моделей:


namespace Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

class ArticleFactory extends Factory
{
    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
 		 'title'=> $this->faker->sentence(),
		 'content' => $this->faker->text(),
		 'slug' => $this->faker->word(),
		 'image' => $this->faker->imageUrl(360, 360, 'animals', true, 'cats'),
		 'viewed' => $this->faker->randomDigitNot(2),
        ];
    }
}

После автоматического создания фабрики в файл нужно добавить строку:

use Illuminate\Support\Str;

Для генерации рандомного контента используется хелпер faker

Сидер

Пример кода сидера


namespace Database\Seeders;

use Illuminate\Database\Seeder;

class ArticleSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        \App\Models\Article::factory(10)->create();
    }
}

Здесь сидер запускает фабрику моделей Article 10 раз.

После этого запускаем команду:

php artisan db:seed --class=ArticleSeeder