Подождите, вы пытаетесь сделать внешний ключ для той же таблицы человеком?Шутки в сторону ?:)
Внешние ключи сделаны для соединения двух таблиц, вам не нужно делать столбец из menu_links, чтобы стать внешним ключом menu_links.
Внешний ключ в таблице НЕ ошибен, скажем, но яЯ не уверен, зачем вам такая конфигурация.В любом случае, если вам НУЖНО сделать это по какой-то причине, вы должны снять ограничение onDelete, потому что MySQL не поддерживает его внутри внешних ключей.Вот Документация для этого.
Если это была просто ошибка, и вы имели в виду другую таблицу, попробуйте следующее:
Обычно мы делаем внешний ключ как идентификаторнекоторые другие таблицы и, как правило, идентификаторы - это автоинкрементное целое число без знака.Итак, если это так, а id
из таблицы menu_links
в вашем случае представляет собой целое число без знака, то вы должны сделать parent_id
такой же тип данных:
Schema::create('RIGHT_TABLE_NAME', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('parent_id')->nullable();
$table->integer('order')->default(0);
$table->timestamps();
$table->foreign('parent_id')->references('id')->on('menu_links')->onDelete('cascade');
});
Основная идея заключается в проверкеТип данных parent_id
и id
ссылок меню должен быть точно таким же.
Нулевое значение как внешнего ключа не имеет ничего общего с ошибкой.