Что это за второй параметр в стороннем методе в миграции Laravel? - PullRequest
1 голос
/ 29 января 2020

Я работаю с Laravel в этом новом проекте, но есть один фрагмент кода, который я не знаю, что он делает.

$table->foreign('course_id', '54419_596eedbb6686e')->references('id')->on('courses');

Строка выше - один из моих файлов миграции, Я знаю, что говорю, что «course_id» - это внешний ключ по отношению к «id» в таблице курсов. Но что я не знаю, так это что за второй параметр ('54419_596eedbb6686e'), если я посмотрю в описании метода, он говорит, что это имя, но имя для чего? Я должен создать такой номер и вставить его во все свои внешние ключи? Есть ли команда для генерации этого числа?

В любом случае, если кто-нибудь может помочь мне понять этот фрагмент кода, было бы здорово. Надеюсь, я был ясен по этому вопросу.

Ответы [ 3 ]

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

Когда вы создаете внешний ключ, вы создаете ограничение, и это то, что указывает второй параметр функции foreign(): имя ограничения.

Если вы используете mysql, вы можете войти в систему. shell (или любую другую программу, которую вы используете для проверки базы данных) и запустите SHOW CREATE TABLE table_name. это выведет информацию о той таблице, которую вы указали. Там вы сможете увидеть «54419_596eedbb6686e» как ограничение вашей таблицы. Примерно так:

CONSTRAINT constraint_name FOREIGN KEY (column_id) REFERENCES table_name (id) ON DELETE CASCADE

Более подробную информацию можно найти по следующим ссылкам: MySQL Синтаксис FOREIGN KEY SQL FOREIGN КЛЮЧ на CREATE TABLE

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

Второй параметр - это имя вашего внешнего ключа.

По умолчанию имя внешнего ключа для этого $table->foreign('course_id')->references('id')->on('courses'); будет courses_course_id_foreign.

В этом случае $table->foreign('course_id', '54419_596eedbb6686e')->references('id')->on('courses'); ваш внешний ключ будет называться 54419_596eedbb6686e.

0 голосов
/ 29 января 2020

Когда вы создаете миграцию, включите ее в миграцию для внешнего ключа

 $table->foreign('foreign_id')
            ->references('id')->on('main_table_name')
            ->onUpdate('CASCADE')
            ->onDelete('RESTRICT');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...