作者 lyh

gxAiblog自动发布

... ... @@ -132,25 +132,31 @@ class lyhDemo extends Command
public function _actions() {
echo '565' . PHP_EOL;
ProjectServer::useProject(565);
$table = 'gl_product';
$connection = DB::connection('custom_mysql');
// 品牌关键词
$str = 'Trimos,insize,Fowler,Mahr,Starrett,Tesa,Mitutoyo,Wixey,Shars,Fisso,Spi,Grizzly,Accumaster,Accuremote,Baker,Sharpe,Compac,Earth,Etalon,Federal,Fell,Fisso,Fowler,Gem,Grizzly,Husky,iGaging,Insize,Kanetec,Magnetics,Mighty,Mitutoyo,Noga,Pittsburgh,Procheck,Saker,Scherr Tumico,Shars,Shinwa,SPI,Starrett,Tesa,Technidea,Trimos,Verdict,Wyler,Wixey';
$brands = array_unique(array_map('trim', explode(',', $str)));
// 获取所有列名
$columns = $connection->getSchemaBuilder()->getColumnListing($table);
// 遍历每个字段执行更新
$brandsStr = 'Trimos,insize,Fowler,Mahr,Starrett,Tesa,Mitutoyo,Wixey,Shars,Fisso,Spi,Grizzly,Accumaster,Accuremote,Baker,Sharpe,Compac,Earth,Etalon,Federal,Fell,Fisso,Fowler,Gem,Grizzly,Husky,iGaging,Insize,Kanetec,Magnetics,Mighty,Mitutoyo,Noga,Pittsburgh,Procheck,Saker,Scherr Tumico,Shars,Shinwa,SPI,Starrett,Tesa,Technidea,Trimos,Verdict,Wyler,Wixey';
$brands = array_unique(array_map('trim', explode(',', $brandsStr)));
// 获取文本类型字段(varchar, text等)
$columns = $connection->table('information_schema.columns')
->where('table_schema', DB::getConfig('custom_mysql.database'))
->where('table_name', $table)
->whereIn('data_type', ['varchar', 'text', 'mediumtext', 'longtext'])
->pluck('column_name')
->toArray();
// 字段更新
foreach ($columns as $field) {
if ($field === 'id' || $field === 'image' || $field === 'og_image') continue; // 跳过主键
// 构造多重 REPLACE()
$sqlField = "`$field`";
$updateExpr = $sqlField;
foreach ($brands as $brand) {
$brand = addslashes($brand); // 避免特殊字符
$updateExpr = "REPLACE($updateExpr, '$brand-', '')";
$updateExpr = "REPLACE($updateExpr, '$brand', '')";
$safeBrand = addslashes($brand);
$updateExpr = "REPLACE(REPLACE($updateExpr, '$safeBrand-', ''), '$safeBrand', '')";
}
$sql = "UPDATE `$table` SET $sqlField = $updateExpr WHERE $sqlField IS NOT NULL AND $sqlField != ''";
echo "执行字段:$field" . PHP_EOL;
$connection->update($sql);
... ...