Ответ 1
@crynobone: Второй параметр используется для логического использования для определения первичного ключа, нет опции длины для целого числа.
Смотрите здесь: https://github.com/laravel/laravel/issues/2212#issuecomment-21608193
Я сделал переход с этой настройкой:
$table->increments('id');
$table->integer('user_id', 10)->unsigned(); // this is meant to be used as a foreign key
После выполнения миграции php artisan возвращается ошибка:
[Exception]
SQLSTATE[42000]: Syntax error or access violation: 1075 Incorrect table definition;
there can be only one auto column and it must be defined as a key (SQL: create table `transactions` (`id` int unsigned not null auto_increment primary key, `user_id` int unsigned not null auto_increment primary key) default character set utf8 collate utf8_unicode_ci) (Bindings: array ())
Я не указывал user_id как первичный ключ auto_increment, но Migration рассматривает его как таковой.
Как я могу сделать внешний ключ в Migrations?
@crynobone: Второй параметр используется для логического использования для определения первичного ключа, нет опции длины для целого числа.
Смотрите здесь: https://github.com/laravel/laravel/issues/2212#issuecomment-21608193
В Laravel 4 второй параметр в целочисленной функции указывает, что целочисленный столбец будет автоматически увеличиваться или нет (и, следовательно, первичный ключ или нет) В моем случае, чтобы добавить автоматически увеличивающийся идентификатор в таблице, я пишу его так:
$table->integer('id' , true);
Он создает целочисленный столбец с 11 цифрами.
Почему бы не указать user_id
в качестве первичного ключа с автоинкрементами?
$table->increments('user_id');
// other columns
...
Конструктор схем создает user_id
, который содержит 10 цифр, без знака и первичный ключ.