作者 lyh

gxAiblog自动发布

@@ -129,44 +129,34 @@ class lyhDemo extends Command @@ -129,44 +129,34 @@ class lyhDemo extends Command
129 } 129 }
130 130
131 131
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'; 135 $table = 'gl_product';
136 $connection = DB::connection('custom_mysql'); 136 $connection = DB::connection('custom_mysql');
137 - // 要替换的品牌关键词 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'; 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 - $arr = array_map('trim', explode(',', $str)); // 去空格  
140 - // 获取所有字段名(列名) 139 + $brands = array_unique(array_map('trim', explode(',', $str)));
  140 + // 获取所有列名
141 $columns = $connection->getSchemaBuilder()->getColumnListing($table); 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 - echo '处理的字段:'.$field.PHP_EOL;  
148 - // 只处理文本字段,跳过 id 或 null 字段  
149 - if ($field === 'id' || !is_string($row->$field)) {  
150 - continue;  
151 - }  
152 - $original = $row->$field;  
153 - $replaced = $original;  
154 - foreach ($arr as $val) {  
155 - $replaced = str_ireplace($val . '-', '', $replaced); // 替换 brand-  
156 - $replaced = str_ireplace($val, '', $replaced); // 替换 brand  
157 - }  
158 - if ($replaced !== $original) {  
159 - $updateData[$field] = $replaced;  
160 - }  
161 - }  
162 - // 有变更再更新  
163 - if (!empty($updateData)) {  
164 - $connection->table($table)  
165 - ->where('id', $row->id)  
166 - ->update($updateData); 142 +
  143 + // 遍历每个字段执行更新
  144 + foreach ($columns as $field) {
  145 + if ($field === 'id' || $field === 'image' || $field === 'og_image') continue; // 跳过主键
  146 + // 构造多重 REPLACE()
  147 + $sqlField = "`$field`";
  148 + $updateExpr = $sqlField;
  149 + foreach ($brands as $brand) {
  150 + $brand = addslashes($brand); // 避免特殊字符
  151 + $updateExpr = "REPLACE($updateExpr, '$brand-', '')";
  152 + $updateExpr = "REPLACE($updateExpr, '$brand', '')";
167 } 153 }
  154 + $sql = "UPDATE `$table` SET $sqlField = $updateExpr WHERE $sqlField IS NOT NULL AND $sqlField != ''";
  155 + echo "执行字段:$field" . PHP_EOL;
  156 + $connection->update($sql);
168 } 157 }
169 - echo '执行结束'.PHP_EOL; 158 +
  159 + echo '执行结束' . PHP_EOL;
170 DB::disconnect('custom_mysql'); 160 DB::disconnect('custom_mysql');
171 } 161 }
172 } 162 }