【发布时间】:2017-05-05 19:54:21
【问题描述】:
我正在努力更新现有数据库以使用自动递增的主键。该数据库当前具有带有自定义值的疯狂命名的 PK 字段。我需要先检查每个表,看看它是否有一个 autoinc 字段,然后我想删除它并替换为“id”字段。
我想将其作为迁移来执行,这是我目前所拥有的,但我似乎无法确定第一个 col 是否已经自动递增,因此我可以删除现有的 PK 并替换。我需要将 hasColumn 替换为 firstColumn 然后 getColumnType...
foreach ($tableNames as $name)
if (!Schema::hasColumn($name, 'id')) {
Schema::table($name, function ($table) {
$table->dropPrimary();
$table->increments('id')->first();
});
}
}
【问题讨论】:
-
你试过
Schema::getColumnType($table,$column)吗? -
@AbrarSariarGalib 是的,我现在就在这条轨道上,显然 laravel 需要包含 Doctrine/DBAL。我想我需要获取一个列列表,然后将第一个列提供给它以检查它是否是 autoinc
-
实际上@AbrarShariarGalib 它只是说“整数”,并没有告诉我它是否是一个自动递增的整数
-
现在我可以考虑使用
DB::raw(),其中 sql 查询将具有类似 -EXTRA like '%auto_increment%'
标签: laravel laravel-5 migration laravel-schema-builder