作者 lyh

gxAiblog自动发布

... ... @@ -132,25 +132,38 @@ class lyhDemo extends Command
public function _actions(){
echo '565' . PHP_EOL;
ProjectServer::useProject(565);
$table = 'gl_product_keyword';
$filed = 'route';
$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';
$arr = explode(',', $str);
$arr = array_map('trim', explode(',', $str)); // 去空格
// 获取所有字段名(列名)
$columns = $connection->getSchemaBuilder()->getColumnListing($table);
// 获取所有数据
$rows = $connection->table($table)->select('*')->get();
foreach ($rows as $row) {
$updateData = [];
foreach ($columns as $field) {
// 只处理文本字段,跳过 id 或 null 字段
if ($field === 'id' || !is_string($row->$field)) {
continue;
}
$original = $row->$field;
$replaced = $original;
foreach ($arr as $val) {
$val = trim($val); // 保留大小写,因为匹配用正则忽略大小写
$str_s = $val . '-';
// 先替换包含 "val-" 的
DB::connection('custom_mysql')->table($table)
->whereRaw("LOWER($filed) LIKE ?", ['%' . strtolower($str_s) . '%'])
->update([
$filed => DB::raw("REGEXP_REPLACE($filed, '" . preg_quote($str_s, '/') . "', '', 1, 0, 'i')")
]);
// 再替换包含 "val" 的(不带 -)
DB::connection('custom_mysql')->table($table)
->whereRaw("LOWER($filed) LIKE ?", ['%' . strtolower($val) . '%'])
->update([
$filed => DB::raw("REGEXP_REPLACE($filed, '" . preg_quote($val, '/') . "', '', 1, 0, 'i')")
]);
$replaced = str_ireplace($val . '-', '', $replaced); // 替换 brand-
$replaced = str_ireplace($val, '', $replaced); // 替换 brand
}
if ($replaced !== $original) {
$updateData[$field] = $replaced;
}
}
// 有变更再更新
if (!empty($updateData)) {
$connection->table($table)
->where('id', $row->id)
->update($updateData);
}
}
DB::disconnect('custom_mysql');
}
... ...