我正在努力更新现有数据库以使用自动增量主键。这个数据库目前有疯狂的命名PK字段与自定义值。我需要首先检查每个表,看它是否首先是autoinc字段,然后我想删除它并替换为'id'字段。
我想这样做是为了迁移,这是我到目前为止所做的,但我似乎无法确定第一个col是否已经自动增量,所以我可以删除现有的PK并替换。我需要用firstColumn替换hasColumn,然后使用getColumnType ...
foreach ($tableNames as $name)
if (!Schema::hasColumn($name, 'id')) {
Schema::table($name, function ($table) {
$table->dropPrimary();
$table->increments('id')->first();
});
}
}
答案 0 :(得分:0)
为了解决这个问题,我从控制器运行了以下代码。请注意,我只有两个演示字段(id
,name
)
$result = DB::select("SHOW COLUMNS FROM table_name");
dd($result);
现在dd()
之后的输出有点像这样:
0 => {#162 ▼
+"Field": "id"
+"Type": "int(11)"
+"Null": "NO"
+"Key": "PRI"
+"Default": null
+"Extra": "auto_increment"
}
1 => {#164 ▼
+"Field": "name"
+"Type": "varchar(255)"
+"Null": "YES"
+"Key": ""
+"Default": null
+"Extra": ""
}
现在您可以轻松提取"Extra" : "auto_increment"
,如下所示:
$result = DB::select("SHOW COLUMNS FROM product");
foreach ($result as $key => $value) {
if($value->Extra == 'auto_increment'){
//do something
};