Создание простого блога на Laravel 11: Создание моделей, миграций и сидов

Создание простого блога на Laravel 11: Создание моделей, миграций и сидов

В этой статье мы создадим модель для постов, миграцию для таблицы posts, фабрику и сиды с тестовыми данными.

Создание модели и миграции

Выполним команду для создания модели Post с миграцией:

php artisan make:model Post -m

Эта команда создаст:

  • Модель Post в папке app/Models/.
  • Миграцию для таблицы posts в папке database/migrations/.

Теперь откроем файл миграции (2025_01_06_000000_create_posts_table.php) и опишем структуру таблицы:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration {
    public function up(): void
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id(); // ID поста
            $table->string('title'); // Заголовок поста
            $table->text('content'); // Содержимое поста
            $table->string('author')->default('Guest'); // Автор поста
            $table->timestamps(); // created_at и updated_at
        });
    }

    public function down(): void
    {
        Schema::dropIfExists('posts');
    }
};

Сохраняем файл и выполняем миграцию:

php artisan migrate

Теперь таблица posts создана в вашей базе данных.

Добавление фабрик для генерации тестовых данных

Laravel предоставляет инструмент для генерации тестовых данных — Factories.
Создаем фабрику для модели Post:

php artisan make:factory PostFactory --model=Post

Фабрика будет находиться в database/factories/PostFactory.php. Обновим её следующим образом:

use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;

class PostFactory extends Factory
{
    protected $model = Post::class;

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

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

Создание сидов для заполнения базы данных

Сиды (seeds) нужны для заполнения базы данных тестовыми данными. Создаем сид:

php artisan make:seeder PostSeeder

Откроем database/seeders/PostSeeder.php и наполним его кодом:

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

class PostSeeder extends Seeder
{
    public function run(): void
    {
        Post::factory(10)->create(); // Создаем 10 тестовых записей
    }
}

Теперь добавим вызов PostSeeder в основной сидер DatabaseSeeder:
Откроем файл database/seeders/DatabaseSeeder.php и обновим его:

class DatabaseSeeder extends Seeder
{
    public function run(): void
    {
        $this->call(PostSeeder::class); // Запуск PostSeeder
    }
}

Заполняем базу данных:

php artisan db:seed

Теперь в таблице posts появится 10 записей с тестовыми данными.

Проверяем данные в базе

С помощью Tinker

Откройте Tinker для работы с данными:

php artisan tinker

Выполните команду для проверки данных:

Post::all();

Вы увидите список созданных записей.

С помощью MySQL Workbench

Итоговый код

Миграция:

Schema::create('posts', function (Blueprint $table) {
    $table->id();
    $table->string('title');
    $table->text('content');
    $table->string('author')->default('Guest');
    $table->timestamps();
});

Фабрика:

return [
    'title' => $this->faker->sentence,
    'content' => $this->faker->paragraph(5),
    'author' => $this->faker->name,
];

Сидер:

Post::factory(10)->create();

Следующие шаги

В следующий статье мы создадим контроллер и CRUD-операции для управления постами.

Ссылки

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x