我想检索数据库记录,修剪它们然后重新插入它们。我尝试使用trim-和pre_replace函数,但是对于这两种情况,只有一些记录被修剪而不是全部。
代码是否正确? 我不知道出了什么问题,也许是简单的事情。谢谢你的帮助!
$table = DB::table('countries');
$result = $table->get();
$array = array();
foreach($result as $item){
$array[$item->id] = array(
'name_en' => preg_replace('/^\p{Z}+|\p{Z}+$/u', '', $item->name_en),
'name_de' => preg_replace('/^\p{Z}+|\p{Z}+$/u', '', $item->name_de)
);
}
foreach($array as $item_id => $newItem){
$update = $table->where('id', $item_id)->update($newItem);
}
答案 0 :(得分:1)
似乎你应该使用:
$update = DB::table('countries')->where('id', $item_id)->update($newItem);
而不是:
$update = $table->where('id', $item_id)->update($newItem);
它对我有用,但当然对于大数据集来说会花费很多时间。
答案 1 :(得分:1)
您也可以通过向对象添加参数并使用laravel进行更新,并调用save方法:
$table = DB::table('countries');
$result = $table->get();
$array = array();
foreach($result as $item){
$item->name_en = preg_replace('/^\p{Z}+|\p{Z}+$/u', '', $item->name_en);
$item->name_de = preg_replace('/^\p{Z}+|\p{Z}+$/u', '', $item->name_de);
$item->save();
}
我认为问题在于您没有正确更新价值。我想修剪应该适合你。