【发布时间】:2013-11-25 04:08:42
【问题描述】:
有没有办法在 Laravel 4 中使用带有 Schema Builder 的迁移设置主键的自动增量初始值?
我想将表的 id 设置为从 100 开始。我知道使用带有 ALTER TABLE MY_TABLE AUTO_INCREMENT = 111111; 的纯 SQL 是可能的,但我想使用 Laravel Migrations 维护数据库版本控制。
有什么想法吗?
【问题讨论】:
有没有办法在 Laravel 4 中使用带有 Schema Builder 的迁移设置主键的自动增量初始值?
我想将表的 id 设置为从 100 开始。我知道使用带有 ALTER TABLE MY_TABLE AUTO_INCREMENT = 111111; 的纯 SQL 是可能的,但我想使用 Laravel Migrations 维护数据库版本控制。
有什么想法吗?
【问题讨论】:
Postgres:
class MyTableMigration extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
$statement = "ALTER SEQUENCE my_table RESTART WITH 111111";
DB::unprepared($statement);
}
...
}
【讨论】:
Wrong object type: 7 ERROR: "users" is not a sequence (SQL: ALTER SEQUENCE users RESTART WITH 7000)
恐怕 Laravel 仍然没有办法更改自动增量值,但你可以创建一个迁移并在其中进行操作:
<?php
use Illuminate\Database\Migrations\Migration;
class MyTableMigration extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
$statement = "
ALTER TABLE MY_TABLE AUTO_INCREMENT = 111111;
";
DB::unprepared($statement);
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
}
}
【讨论】:
DB::update("ALTER TABLE {your table name} AUTO_INCREMENT = 1;");。