如何在Laravel中查找表name列以john开头的内容并替换为smith
Laravel 批量替换更新数据库表name列内容
需求:将表中name列所有以john开头的字符串,替换开头的john为smith,例如john_items.3更新为smith_items.3。
实现方法
方法一:使用DB门面直接操作
DB::table('你的表名') ->where('name', 'like', 'john%') ->update([ 'name' => DB::raw("CONCAT('smith', SUBSTRING(name, LENGTH('john') + 1))") ]);
方法二:使用Eloquent模型操作(假设对应模型为YourModel)
YourModel::where('name', 'like', 'john%') ->update([ 'name' => DB::raw("CONCAT('smith', SUBSTRING(name, LENGTH('john') + 1))") ]);
注意事项
- 执行更新前,建议先查询确认目标记录是否正确,避免误操作:
// 查询待更新的记录 $targetRecords = DB::table('你的表名')->where('name', 'like', 'john%')->get();
- 该逻辑适用于替换固定前缀的场景,
SUBSTRING(name, LENGTH('john') + 1)会截取john之后的所有字符,再与smith拼接得到新值。
内容的提问来源于stack exchange,提问作者kamran
相关产品推荐
相关产品推荐

