PHP Laravel:来自数组的条件更新查询

时间:2015-10-26 22:17:13

标签: php mysql laravel laravel-5

我想在单个查询中添加多个where子句和多个字段来更新。下面的代码不会返回错误但不做任何事情:(请帮助

        $query = DB::table($table);
        foreach($where as $key => $value ){
            if($key != 0){
                $query -> where( $key , '=' , $value);
            }
        }
        foreach($field as $key => $value ){
            if($key != 0){
                $query -> update([$key => $value]);
            }
        }

        $result2 = $query->get();

3 个答案:

答案 0 :(得分:0)

你不能在循环内部使用。只有一个where子句。你可以使用"或者"以及where子句。有关详细信息,请参阅此

http://laravel.com/docs/5.1/queries#selects

答案 1 :(得分:0)

这不起作用,因为您没有将新查询构建器约束存储为变量,而使用get()时只使用原始值DB::table($table)

请改为:

    $query = DB::table($table);
    foreach($where as $key => $value ){
        if($key != 0){
            $query = $query -> where( $key , '=' , $value);
        }
    }
    foreach($field as $key => $value ){
        if($key != 0){
            $query = $query -> update([$key => $value]);
        }
    }

    $result2 = $query->get();

答案 2 :(得分:0)

部分解决方案:使用此代码我可以更新多个字段但需要多个查询,即使它是自动的。必须在哪里声明条款:(另一个问题是,如果我不评论if行它会产生错误,但如果我把它留在那里,一个更新是属性0 :(

foreach($field as $key => $value ){
            //if($key != 0){
                DB::table($table)
                    ->where('iduser', '=', $id)
                    ->where('iddeal', '=', $id_deal)
                    ->where('idplan', '=', $id_plan)
                    ->where('idtime', '=', $id_time)
                    ->update(array($key => $value));
            //}
        }