Дублирование столбцов - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь создать внешние ключи для своего проекта laravel 5.8, но получаю ошибку: enter image description here

Мой файл миграции

    public function up()
    {
        Schema::table('chatter_discussion', function (Blueprint $table) {
            $table->integer('chatter_category_id')->unsigned()->index();
            $table->foreign('chatter_category_id')->references('id')->on('chatter_categories')
                        ->onDelete('cascade')
                        ->onUpdate('cascade');
            $table->bigInteger('user_id')->unsigned()->index();
            $table->foreign('user_id')->references('id')->on('users')
                        ->onDelete('cascade')
                        ->onUpdate('cascade');
        });
        Schema::table('chatter_post', function (Blueprint $table) {
            $table->integer('chatter_discussion_id')->unsigned()->index();
            $table->foreign('chatter_discussion_id')->references('id')->on('chatter_discussion')
                        ->onDelete('cascade')
                        ->onUpdate('cascade');
            $table->bigInteger('user_id')->unsigned()->index();
            $table->foreign('user_id')->references('id')->on('users')
                        ->onDelete('cascade')
                        ->onUpdate('cascade');
        });
    }

1 Ответ

1 голос
/ 16 апреля 2019

Вы можете просто определить свои отношения в своих моделях и забыть о настройке внешних ключей и т. Д.

https://laravel.com/docs/5.8/eloquent-relationships

Таким образом, в ваших моделях ChatterDiscussion / ChatterPost (которые вам, возможно, придется создать) у вас будет такая функция:

public function chatter_category()
{
    return $this->hasOne('App\ChatterCategory');
}

И в вашей ChatterCategory (которую вам также может понадобиться создать) вы получите обратное:

public function chatter_discussion()
{
    return $this->belongsTo('App\ChatterDiscussion');
}
public function chatter_post()
{
    return $this->belongsTo('App\ChatterPost');
}

Затем вы можете обработать удаление в каждой из функций удаления в ваших моделях.

В любом случае, ваша ошибка в том, что вы создаете одно и то же имя столбца дважды. Как-то так должно работать (я не проверял это)

Schema::table('chatter_discussion', function (Blueprint $table) {
            $table->foreign('chatter_category_id')->unsigned()->index()->references('id')->on('chatter_categories')
                        ->onDelete('cascade')
                        ->onUpdate('cascade');
            $table->foreign('user_id')->references('id')->on('users')
                        ->onDelete('cascade')
                        ->onUpdate('cascade');
        });
        Schema::table('chatter_post', function (Blueprint $table) {
            $table->foreign('chatter_discussion_id')->unsigned()->index()->references('id')->on('chatter_discussion')
                        ->onDelete('cascade')
                        ->onUpdate('cascade');
            $table->foreign('user_id')->references('id')->on('users')
                        ->onDelete('cascade')
                        ->onUpdate('cascade');
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...