php – Laravel 4:如何使用迁移创建非主要自动递增列?

php – Laravel 4:如何使用迁移创建非主要自动递增列?,第1张

概述我目前正在开发一个由主服务器和许多客户端组成的Laravel 4项目.客户端创建数据并将其发送到主服务器.为避免冲突,我使用UUID v4作为主键. 但是,一旦在服务器上创建数据,我想分配一个唯一的自动递增整数,以便用户更容易识别数据.例如:用户可以谈论项目#24567而不是谈论项目5a8e896d-3ab4-48d2-9d39-faeb5227f012 为了保持我的应用程序可管理我正在使用迁移, 我目前正在开发一个由主服务器和许多客户端组成的Laravel 4项目.客户端创建数据并将其发送到主服务器.为避免冲突,我使用UUID v4作为主键.

但是,一旦在服务器上创建数据,我想分配一个唯一的自动递增整数,以便用户更容易识别数据.例如:用户可以谈论项目#24567而不是谈论项目5a8e896d-3ab4-48d2-9d39-faeb5227f012

为了保持我的应用程序可管理我正在使用迁移,我对此表的当前迁移如下所示:

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迁移具有主键和单独的自动递增字段的表.

我发现了问题,Laravel似乎正在为每个auto_increment字段创建一个主键.当我删除主键部分时,它要求我提供一个索引,所以我在迁移时调用了 – > unique(),但这也没有用.更改返回’auto_increment主键’;返回’auto_increment unique’;解决了我的问题,虽然它现在被黑客入侵,这当然是不好的做法.
/** * Get the sql for an auto-increment column modifIEr. * * @param  Illuminate\Database\Schema\Blueprint  $blueprint * @param  Illuminate\Support\Fluent  $column * @return string|null */protected function modifyIncrement(Blueprint $blueprint,Fluent $column){    if ($column->type == 'integer' and $column->autoIncrement)    {        return ' auto_increment unique'; //return ' auto_increment primary key';    }}
总结

以上是内存溢出为你收集整理的php – Laravel 4:如何使用迁移创建非主要自动递增列?全部内容,希望文章能够帮你解决php – Laravel 4:如何使用迁移创建非主要自动递增列?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1264039.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存