How to generate a query to db if several “where” a

2019-08-25 08:03发布

问题:

I have a method with four incoming arrays.

The first two arrays $whereColumns[] and $updateColumns[] contain columns names.

The third column $whereFilters[] contains filters for where methods.

And the last one $updateFilters[] contains values for updating.

How can I generate only one search query with several where methods and several updated columns? Now I know only how create a query with several where methods in a loop.

for($i=0; $<count($whereColumns); $i++){
    $query->where($whereColumns[$i], '=', $whereFilters[$i]);
}
$result = $query->get();

But how to generate a query with update like this (but this doesn't work):

for($i=0; $i<count($updateColumns); $i++){
    $query->update($updateColumns[$i] => $updateFilters[$i]); 
} 
$result = $query->get();

Both of these loops should generate one search query in total for updating a table data.

回答1:

You can loop through your $updateColumns and create an array containing all columns and values like this: $updateArray = [$column[0] => $value[0], $column[1] => $value[1]];

Then you can put this whole array into the query

$query->update($updateArray);