Создание ссылки на столбец 2 столбца из отдельных таблиц - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь взять 2 таблицы, в обеих из которых есть столбцы с именами email password и isBusiness, и автоматически обновить эти значения в одной таблице с именем authentication

Миграция аутентификации

Schema::create('authentication', function (Blueprint $table) {
        $table->increments('auth_id');
        $table->string('email');
        $table->foreign('email')->references('email')->on('businesses');
        $table->foreign('email')->references('email')->on('consumers');
        $table->string('password');
        $table->foreign('password')->references('password')->on('businesses');
        $table->foreign('password')->references('password')->on('consumers');
        $table->integer('isBusiness');
        $table->foreign('isBusiness')->references('isBusiness')->on('businesses');
        $table->foreign('isBusiness')->references('isBusiness')->on('consumers');
        $table->timestamps();
    });

Ошибка

 SQLSTATE[HY000]: General error: 1005 Can't create table `sprout_db`.`#sql-2
  7a4_30` (errno: 150 "Foreign key constraint is incorrectly formed")

Рабочий стол

Schema::create('businesses', function (Blueprint $table) {
        $table->increments('bus_id', 11);
        $table->string('bus_name', 50);
        $table->string('bus_address', 50);
        $table->string('bus_city', 50);
        $table->string('bus_prov', 50);
        $table->string('bus_postal', 50);
        $table->string('bus_phone', 50);
        $table->string('email', 50);
        $table->string('password', 100);
        $table->integer('isBusiness')->default('1');
        $table->timestamps();
        $table->rememberToken();
        $table->engine = 'InnoDB';
    });

Таблица потребителей

Schema::create('consumers', function (Blueprint $table) {
            $table->increments('con_id', 11);
            $table->string('con_fname', 50);
            $table->string('con_lname', 50);
            $table->string('email', 50);
            $table->string('password', 100);
            $table->integer('isBusiness')->default('0');
            $table->timestamps();
            $table->rememberToken();
            $table->engine = 'InnoDB';
        });

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

1 Ответ

0 голосов
/ 09 июня 2018

Просто добавьте метод index () к своему ключу.

    $table->integer('isBusiness')->index()->unsigned();
...