laravel 架构生成器,查找 columnType 自动增量
laravel schema builder, find columnType autoincrement
我正在努力更新现有数据库以使用自动递增的主键。这个数据库目前有疯狂命名的 PK 字段和自定义值。我需要先检查每个 table 以查看它是否首先具有 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();
});
}
}
为了解决问题我运行下面的代码来自一个controller。注意这里我只有两个字段用于演示 (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
};
我正在努力更新现有数据库以使用自动递增的主键。这个数据库目前有疯狂命名的 PK 字段和自定义值。我需要先检查每个 table 以查看它是否首先具有 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();
});
}
}
为了解决问题我运行下面的代码来自一个controller。注意这里我只有两个字段用于演示 (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
};