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