Как создать сводную таблицу laravel? - PullRequest
1 голос
/ 12 октября 2019

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

Таблица сообщений в PHPMyAdmin

id   title
1    Death
2    Love

Таблица тегов в PHPMyAdmin

id   name

Вот моя миграция для создания сводной таблицы

<?php

class CreatePostTagTable extends Migration
{
    public function up()
    {
        Schema::create('post_tag', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->integer('post_id')->unsigned();
            $table->foreign('post_id')->references('id')->on('posts');
            $table->integer('tag_id')->unsigned();
            $table->foreign('tag_id')->references('id')->on('tags');
        });
    }

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

Теперь, когда язапустите PHP artisan migrate Я получаю следующую ошибку.

 SQLSTATE[HY000]: General error: 1005 Can't create table `royalad`.`#sql-ee8_307` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `post_tag` add constraint `post_tag_post_id_foreign` foreign key (`post_id`) references `posts` (`id`)) 

Что я делаю не так с моим кодом?

1 Ответ

2 голосов
/ 12 октября 2019

Измените $table->integer('post_id')->unsigned(); на $table->bigInteger('post_id')->unsigned(); В вашем tag_id также.

...