我想生成以下SQL查询,
ALTER TABLE `api`.`users` CHANGE COLUMN `id` `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ;
在Laravel 5
中引入了另一个抽象层,change,之后您可以像这样编码,
public function up()
{
Schema::table('users', function (Blueprint $table) {
//DB::statement("ALTER TABLE `api`.`users`
// CHANGE COLUMN `id` `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ;");
$table->increments('id')->unsigned()->change();
});
}
撤消更改的方法是什么,我该如何撰写down()
?
未成功我尝试了以下内容。
public function down()
{
//DB::statement("ALTER TABLE `api`.`users`
// CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT ;");
$table->increments('id')->change();
}
---编辑---
我正在使用包含实时数据的现有表(实际上是我本地环境中的副本)。所以我担心放下一列不是我的选择。
答案 0 :(得分:0)
您可以删除该列并重新添加。因为它自动递增所有现有行应该保持相同的ID。
FieldError
但请不要忘记,使用增量会自动为您添加public function down()
{
$table->dropColumn('id');
$table->increments('id');
}
,并且所有密钥都应该是无符号的,包括任何外键列。