作者 lyh

gxAiblog自动发布

@@ -132,25 +132,31 @@ class lyhDemo extends Command @@ -132,25 +132,31 @@ 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 +
135 $table = 'gl_product'; 136 $table = 'gl_product';
136 $connection = DB::connection('custom_mysql'); 137 $connection = DB::connection('custom_mysql');
137 - // 品牌关键词  
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';  
139 - $brands = array_unique(array_map('trim', explode(',', $str)));  
140 - // 获取所有列名  
141 - $columns = $connection->getSchemaBuilder()->getColumnListing($table);  
142 138
143 - // 遍历每个字段执行更新 139 + $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';
  140 + $brands = array_unique(array_map('trim', explode(',', $brandsStr)));
  141 +
  142 + // 获取文本类型字段(varchar, text等)
  143 + $columns = $connection->table('information_schema.columns')
  144 + ->where('table_schema', DB::getConfig('custom_mysql.database'))
  145 + ->where('table_name', $table)
  146 + ->whereIn('data_type', ['varchar', 'text', 'mediumtext', 'longtext'])
  147 + ->pluck('column_name')
  148 + ->toArray();
  149 +
  150 + // 字段更新
144 foreach ($columns as $field) { 151 foreach ($columns as $field) {
145 - if ($field === 'id' || $field === 'image' || $field === 'og_image') continue; // 跳过主键  
146 - // 构造多重 REPLACE()  
147 $sqlField = "`$field`"; 152 $sqlField = "`$field`";
148 $updateExpr = $sqlField; 153 $updateExpr = $sqlField;
  154 +
149 foreach ($brands as $brand) { 155 foreach ($brands as $brand) {
150 - $brand = addslashes($brand); // 避免特殊字符  
151 - $updateExpr = "REPLACE($updateExpr, '$brand-', '')";  
152 - $updateExpr = "REPLACE($updateExpr, '$brand', '')"; 156 + $safeBrand = addslashes($brand);
  157 + $updateExpr = "REPLACE(REPLACE($updateExpr, '$safeBrand-', ''), '$safeBrand', '')";
153 } 158 }
  159 +
154 $sql = "UPDATE `$table` SET $sqlField = $updateExpr WHERE $sqlField IS NOT NULL AND $sqlField != ''"; 160 $sql = "UPDATE `$table` SET $sqlField = $updateExpr WHERE $sqlField IS NOT NULL AND $sqlField != ''";
155 echo "执行字段:$field" . PHP_EOL; 161 echo "执行字段:$field" . PHP_EOL;
156 $connection->update($sql); 162 $connection->update($sql);