В Laravel сидеры (seeders) и фабрики (factories) играют важную роль в создании и наполнении базы данных тестовыми данными. Давайте рассмотрим, как создать сидер и фабрику для заполнения таблицы тестовыми постами в нашем блоге.

Создание сидера

Сидеры (seeders) в Laravel — это классы, используемые для наполнения базы данных начальными тестовыми данными. Они помогают создавать реалистичные сценарии данных для разработки и тестирования приложений. Сидеры можно использовать совместно с фабриками для автоматизации процесса заполнения таблиц данными.

Сначала создадим сидер с помощью Artisan:

php artisan make:seeder PostsTableSeeder

Эта команда создаст файл PostsTableSeeder.php в директории database/seeders. Внутри этого файла определим, какие данные мы хотим добавить:

// database/seeders/PostsTableSeeder.php

use Illuminate\Database\Seeder;
use App\Models\Post;

class PostsTableSeeder extends Seeder
{
    public function run()
    {
        // Используем фабрику для создания десяти тестовых постов
        Post::factory()->count(10)->create();
    }
}

Создание фабрики

Фабрики (factories) в Laravel — это классы, предназначенные для генерации тестовых данных и наполнения базы данных. Они работают совместно с сидерами и позволяют создавать множество записей с реалистичными значениями, упрощая процесс разработки и тестирования приложений.

Теперь создадим фабрику для определения структуры наших тестовых постов. Запустим команду:

php artisan make:factory PostFactory

Эта команда создаст файл PostsTableSeeder.php в директории database/factories. Внутри файла определим структуру постов:

// database/factories/PostFactory.php

// Импорт модели Post и базового класса Factory
use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;

class PostFactory extends Factory
{
    // Задаем модель, с которой будет связана фабрика
    protected $model = Post::class;

    // Определяем структуру данных для создания тестового поста
    public function definition()
    {
        return [
            'title' => $this->faker->sentence,   // Генерация случайного заголовка
            'content' => $this->faker->paragraph, // Генерация случайного содержания
        ];
    }
}

Запуск сидера

Теперь давайте запустим наш сидер, чтобы добавить тестовые данные в базу данных:

php artisan db:seed --class=PostsTableSeeder

Сидер использует фабрику для создания десяти тестовых постов и наполняет таблицу «posts».

Теперь при запросе к http://127.0.0.1:8000/posts/ выдается список постов:

А при запросе к http://127.0.0.1:8000/posts/3 отображается третий пост:

 


Warning: Undefined variable $aff_bottom_mark in /sites/codelab.pro/wp-content/themes/myTheme/dist/partials/post/post_base.php on line 81

Warning: Undefined variable $aff_bottom_info in /sites/codelab.pro/wp-content/themes/myTheme/dist/partials/post/post_base.php on line 85