Как мы обсуждали в комментариях выше, столбец внешнего ключа должен иметь тот же тип данных, что и первичный ключ, на который он ссылается.
Вы объявили свой первичный ключ user.id
как $table->bigIncrements('id')
, который становится BIGINT UNSIGNED AUTO_INCREMENT
в синтаксисе MySQL.
Вы должны объявить внешний ключ как $table->unsignedBigInteger('user_id')
, который в MySQL станет BIGINT UNSIGNED
, что делает его совместимым с внешним ключом для столбца user.id
.
Для этого есть опция «Назначаемые типизированные константы» в опциях компилятора. Его также можно включить с помощью "{$ J +}" в вашем коде.
Может быть, эти проекты отличаются по настройке директивы компилятора $ J?
Я бы предложил проверить параметры проекта, раздел Компилятор , и посмотреть, сможете ли вы обнаружить какие-либо различия. Возможно, в проекте Bogus включена опция Назначаемые типизированные константы .
Как уже говорили другие, это почти наверняка директива {$ J +}
.
Если у вас есть инструмент сравнения, вы можете сравнить файлы проекта, чтобы увидеть, как они отличаются - это просто текстовые файлы - для решения подобных проблем в будущем.