私は現在、マスターサーバーと多くのクライアントで構成されるLaravel4プロジェクトに取り組んでいます。クライアントはデータを作成し、これをマスターサーバーに送信します。競合を回避するために、主キーとしてUUIDv4を使用しています。
ただし、サーバー上でデータが作成されたら、ユーザーがデータを識別しやすくするために、一意の自動インクリメント整数を割り当てたいと思います。item 5a8e896d-3ab4-48d2-9d39-faeb5227f012
例:ユーザーについて話す代わりに、item #24567
アプリを管理しやすくするために、移行を使用しています。このテーブルの現在の移行は次のようになります。
public function up()
{
Schema::table('items', function($table)
{
$table->create();
$table->string('id')->primary(); //'id' For the purpose of keeping the ORM working, this field stores the UUID.
$table->integer('number', true); //The human readable item number, the second parameter is true for auto-increment
$table->text('otherdata');
$table->timestamps();
});
}
問題は、自動インクリメントを定義するときにLaravelが自動的に主キーを作成し、2つの主キーがあるために移行が失敗することです。
[Exception] SQLSTATE[42000]: Syntax error or access violation: 1068 Multiple primary key defined
(SQL: alter table `items` add primary key items_id_primary(`id`)) (Bindings: array ())
Laravel 4の移行を使用して、主キーと個別の自動インクリメントフィールドを備えたテーブルを作成する方法はありますか?