laravel, формат строки справочной таблицы миграции при каскаде удаления - PullRequest
0 голосов
/ 23 января 2020

Как установить связь между двумя таблицами в формате строки? Я получаю сообщение об ошибке

SQLSTATE [HY000]: общая ошибка: 1005 Невозможно создать таблицу .... ordercustomizes (ошибка: 150 «Неправильно сформировано ограничение внешнего ключа») ( SQL: изменить таблицу ordercustomizes добавить ограничение ordercustomizes_userorder_id_foreign ссылки на внешний ключ (userorder_id) userorders (order_number) при каскаде удаления)

    Schema::create('ordercustomizes', function (Blueprint $table) {
        $table->engine = 'InnoDB';
        $table->increments('id');
        $table->string('userorder_id');
        $table->integer('product_id')->unsigned();
        $table->integer('customizetitle_id')->unsigned();
        $table->integer('customizeproduct_id')->unsigned();
        $table->timestamps();

            $table->foreign('userorder_id')
            ->references('order_number')
            ->on('userorders')
            ->onDelete('cascade');

основная таблица:

   Schema::create('userorders', function (Blueprint $table) {
        $table->engine = 'InnoDB';
        $table->increments('id');
        $table->integer('product_id')->unsigned();
        $table->integer('storeinfo_id')->unsigned();
        $table->integer('user_id')->unsigned();
         $table->string('order_number');          

1 Ответ

1 голос
/ 23 января 2020

Сначала необходимо создать индекс для поля order_number (в таблице userorders).

Вы можете сделать это при создании таблицы, используя: $table->string('order_number')->index();
Или вы можете изменить существующей таблицы и просто создайте новый индекс, используя: $table->index('order_number');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...