Создадим базу данных и пропишем в .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