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

PHP Laravel:来自数组的条件更新查询,php,mysql,laravel,laravel-5,Php,Mysql,Laravel,Laravel 5,我想在一个查询中添加多个where子句和多个字段进行更新。下面的代码不返回错误,但不执行任何操作:(请帮助 您不能在循环中使用where。只有一个where子句。您可以将“orWhere”与where子句一起使用。有关更多详细信息,请参阅此 您不能在循环中使用where。只有一个where子句。您可以将“orWhere”与where子句一起使用。有关更多详细信息,请参阅此 这不起作用,因为您没有将新的查询生成器约束存储为变量,并且在使用get()时,只需使用原始值DB::table($table

我想在一个查询中添加多个where子句和多个字段进行更新。下面的代码不返回错误,但不执行任何操作:(请帮助


您不能在循环中使用where。只有一个where子句。您可以将“orWhere”与where子句一起使用。有关更多详细信息,请参阅此


您不能在循环中使用where。只有一个where子句。您可以将“orWhere”与where子句一起使用。有关更多详细信息,请参阅此


这不起作用,因为您没有将新的查询生成器约束存储为变量,并且在使用
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();

这不起作用,因为您没有将新的查询生成器约束存储为变量,并且在使用
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();

部分解决方案:使用此代码,我可以更新多个字段,但需要多个查询,即使它是自动的。where子句必须声明:(另一个问题是,如果我不注释if行,它将创建一个错误,但如果我将其保留在那里,一个更新是属性0:)


部分解决方案:使用此代码,我可以更新多个字段,但需要多个查询,即使它是自动的。where子句必须声明:(另一个问题是,如果我不注释if行,它将创建一个错误,但如果我将其保留在那里,一个更新是属性0:)


或者where不是我想要的,我不需要更新where(条件1)或(条件2)…但是where(条件1)和(条件2)…所以我需要类似的andWhere(如果存在,我认为不存在)…或者where不是我想要的,我不需要更新where(条件1)或(条件2)…但是where(条件1)和(条件2)…所以我需要一个类似的andWhere(如果存在,我认为不存在)…你可以用
unset($field[0]);$query->update($field);
我不明白如何使用unset($field[0])替换第二个foreach循环为了解决这个问题,在这种情况下字段是否为空?我可以尝试加载$field并调用数组上的update吗?THKSY您可以用
unset($field[0]);$query->update($field);
我不明白如何使用unset($field[0])替换第二个foreach循环为了解决这个问题,在这种情况下,字段是否为空?我是否可以尝试加载$field并调用数组上的更新?thksi尝试了此代码,但结果相同,没有行被更新:(我不知道为什么。例如,如果我删除“if($key!=0){”条件i有一个错误,并且打印的查询是这样的:UPDATE table_name SET field=value,其中0='',field=value和…这是错误,但因为0不是列。如果我用if语句将0排除在查询之外,则查询不会出错,但不会工作。可能需要不同的方法SQLSTATE[42S22]:未找到列:1054“where子句”中的未知列“0”(SQL:从
booking
where
0
=和
iddeal
=1和
idplan
=1和
idtime
=1中选择*你到底想做什么?在进一步评估代码后,你似乎试图更新多个记录。是的,我应该使用多个条件更新多个字段,因此多个WHERE条件和多个更新字段!我尝试了此代码,但结果相同,没有行被更新:(我不知道为什么。例如,如果我删除“如果($key!=0){“条件i有一个错误,打印的查询是这样的:UPDATE table_name SET field=value,其中0='',field=value,…这是错误,但因为0不是列。如果我用if语句将0排除在查询之外,则查询不会出错,但不会工作。可能需要不同的方法SQLSTATE[42S22]:未找到列:1054“where子句”中的未知列“0”(SQL:从
booking
where
0
=和
iddeal
=1和
idplan
=1和
idtime
=1中选择*你到底想做什么?在进一步评估代码之后,你似乎试图更新多个记录。是的,我应该用多个条件更新多个字段,所以多个WHERE条件和多个update字段!
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));
            //}
        }