Создание простого блога на 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-операции для управления постами.