我目前正在开发一个由主服务器和许多客户端组成的 Laravel 4 项目。客户端创建数据并将其发送到主服务器。为了避免冲突,我使用 UUID v4 作为主键。
但是,一旦在服务器上创建了数据,我想分配一个唯一的自动递增整数,以便用户更容易识别数据。例如:代替谈论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 在定义自动增量时会自动创建一个主键,因此迁移最终会失败,因为有两个主键。
[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 迁移来获得具有主键和单独的自动递增字段的表。