我想在单个查询中添加多个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();
答案 0 :(得分:0)
你不能在循环内部使用。只有一个where子句。你可以使用"或者"以及where子句。有关详细信息,请参阅此
答案 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));
//}
}