11

このセットアップで移行を行いました:

$table->increments('id');
$table->integer('user_id', 10)->unsigned(); // this is meant to be used as a foreign key

php artisan migrate を実行すると、エラーが返されます。

[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 で外部キーを作成するにはどうすればよいですか?

4

3 に答える 3

21

@crynobone: 2 番目のパラメーターは、ブール値を使用して主キーを決定するためのものです。整数の長さオプションはありません。

ここを参照してください: https://github.com/laravel/laravel/issues/2212#issuecomment-21608193

于 2013-07-26T08:45:40.403 に答える
3

Laravel 4では、整数関数の2番目のパラメータは、整数列が自動インクリメントされるかどうかを示すためのものです(したがって、主キーかどうか)

$table->integer('id' , true);

11 桁の整数列を作成します。

于 2013-09-18T12:23:42.253 に答える
-2

user_id自動インクリメントで主キーとして指定しないのはなぜですか?

$table->increments('user_id');
// other columns
...

スキーマ ビルダーuser_idの create 。これは 10 桁の長さで、署名されていない主キーです。

于 2013-07-26T10:31:46.100 に答える