无法修剪每个数据库记录

时间:2014-09-22 15:41:46

标签: php laravel laravel-4 preg-replace trim

我想检索数据库记录,修剪它们然后重新插入它们。我尝试使用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);  

    }

2 个答案:

答案 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();
}

我认为问题在于您没有正确更新价值。我想修剪应该适合你。