作者 lyh

gxAiblog自动发布

@@ -132,25 +132,38 @@ class lyhDemo extends Command @@ -132,25 +132,38 @@ class lyhDemo extends Command
132 public function _actions(){ 132 public function _actions(){
133 echo '565' . PHP_EOL; 133 echo '565' . PHP_EOL;
134 ProjectServer::useProject(565); 134 ProjectServer::useProject(565);
135 - $table = 'gl_product_keyword';  
136 - $filed = 'route'; 135 + $table = 'gl_product';
  136 + $connection = DB::connection('custom_mysql');
  137 + // 要替换的品牌关键词
137 $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'; 138 $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';
138 - $arr = explode(',', $str);  
139 - foreach ($arr as $val) {  
140 - $val = trim($val); // 保留大小写,因为匹配用正则忽略大小写  
141 - $str_s = $val . '-';  
142 - // 先替换包含 "val-" 的  
143 - DB::connection('custom_mysql')->table($table)  
144 - ->whereRaw("LOWER($filed) LIKE ?", ['%' . strtolower($str_s) . '%'])  
145 - ->update([  
146 - $filed => DB::raw("REGEXP_REPLACE($filed, '" . preg_quote($str_s, '/') . "', '', 1, 0, 'i')")  
147 - ]);  
148 - // 再替换包含 "val" 的(不带 -)  
149 - DB::connection('custom_mysql')->table($table)  
150 - ->whereRaw("LOWER($filed) LIKE ?", ['%' . strtolower($val) . '%'])  
151 - ->update([  
152 - $filed => DB::raw("REGEXP_REPLACE($filed, '" . preg_quote($val, '/') . "', '', 1, 0, 'i')")  
153 - ]); 139 + $arr = array_map('trim', explode(',', $str)); // 去空格
  140 + // 获取所有字段名(列名)
  141 + $columns = $connection->getSchemaBuilder()->getColumnListing($table);
  142 + // 获取所有数据
  143 + $rows = $connection->table($table)->select('*')->get();
  144 + foreach ($rows as $row) {
  145 + $updateData = [];
  146 + foreach ($columns as $field) {
  147 + // 只处理文本字段,跳过 id 或 null 字段
  148 + if ($field === 'id' || !is_string($row->$field)) {
  149 + continue;
  150 + }
  151 + $original = $row->$field;
  152 + $replaced = $original;
  153 + foreach ($arr as $val) {
  154 + $replaced = str_ireplace($val . '-', '', $replaced); // 替换 brand-
  155 + $replaced = str_ireplace($val, '', $replaced); // 替换 brand
  156 + }
  157 + if ($replaced !== $original) {
  158 + $updateData[$field] = $replaced;
  159 + }
  160 + }
  161 + // 有变更再更新
  162 + if (!empty($updateData)) {
  163 + $connection->table($table)
  164 + ->where('id', $row->id)
  165 + ->update($updateData);
  166 + }
154 } 167 }
155 DB::disconnect('custom_mysql'); 168 DB::disconnect('custom_mysql');
156 } 169 }