PHP Laravel:来自数组的条件更新查询
我想在一个查询中添加多个where子句和多个字段进行更新。下面的代码不返回错误,但不执行任何操作:(请帮助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子句。您可以将“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
where0
=和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
where0
=和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));
//}
}