Создадим базу данных и пропишем в .env данные для соединения с ней.
Создадим модель и миграцию Category. Выполним запрос в консоли:
php artisan make:model Category -m
Флаг -m для создания миграции.
Создадим модель и миграцию Tag. Выполним запрос в консоли:
php artisan make:model Tag -m
И Post:
php artisan make:model Post -m
Создадим миграцию:
php artisan make:migration create_post_tag_table
Эта миграция связывает таблицы posts и tags. По правилам их нужно записывать по алфавиту в единственном числе в названии миграций.
Изменим миграцию database/migrations/2021_02_20_132515_create_categories_table.php :
public function up()
{
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->string('slug')->unique();
$table->timestamps();
});
}
Аналогично изменим миграцию database/migrations/2021_02_20_132802_create_tags_table.php :
public function up()
{
Schema::create('tags', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->string('slug')->unique();
$table->timestamps();
});
}
database/migrations/2021_02_20_133103_create_posts_table.php :
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->string('slug')->unique();
$table->text('description');
$table->text('content');
$table->integer('category_id')->unsigned();
$table->integer('views')->unsigned()->default(0);
$table->string('thumbnail')->nullable();
$table->timestamps();
});
database/migrations/2021_02_20_133345_create_post_tag_table.php :
Schema::create('post_tag', function (Blueprint $table) {
$table->increments('id');
$table->integer('post_id')->unsigned();
$table->integer('tag_id')->unsigned();
$table->timestamps();
});
Выполним миграцию:
php artisan migrate
Можем обновить миграции (откатим и сделаем заново), если нужно :
php artisan migrate:refresh