正在显示
1 个修改的文件
包含
17 行增加
和
11 行删除
| @@ -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); |
-
请 注册 或 登录 后发表评论