Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在Cakephp 3中,如何在单个查询中更新多行,每行具有不同的条件?_Mysql_Cakephp 3.0_Query Builder_Upsert - Fatal编程技术网

Mysql 在Cakephp 3中,如何在单个查询中更新多行,每行具有不同的条件?

Mysql 在Cakephp 3中,如何在单个查询中更新多行,每行具有不同的条件?,mysql,cakephp-3.0,query-builder,upsert,Mysql,Cakephp 3.0,Query Builder,Upsert,在CakePHP3中,我需要在一个查询中更新多行。要插入多行,我使用了以下查询: $Users = $this->Users->newEntities($insertDataArray); $this->Users->saveMany($users); 但是现在我必须用不同的条件更新多行。我有多个数组,使用for循环,迭代每个数组并更新表行。这是一种不好的做法,我想在单个查询中更新数据 foreach($mainArray as $updateArray){ $

在CakePHP3中,我需要在一个查询中更新多行。要插入多行,我使用了以下查询:

$Users = $this->Users->newEntities($insertDataArray);

$this->Users->saveMany($users); 
但是现在我必须用不同的条件更新多行。我有多个数组,使用for循环,迭代每个数组并更新表行。这是一种不好的做法,我想在单个查询中更新数据

foreach($mainArray as $updateArray){
  $this->Users->updateAll([$updateArray],'account_id'=>$updateArray['account_id']]);
}

有没有一种方法可以在纯SQL中进行更新?如果是这样,您将找到一种用cakephp翻译该查询的方法(如果您将您的工作发布到目前为止,有人会帮助您),否则,根据您的数据格式,循环是唯一的方法,
patchEntities
后跟
saveMany
可能会很好,但这不是“一个查询”。不清楚您是真的只想有一个查询,还是只是想避免代码中的循环
saveMany
消除代码中的循环,但只能在其他地方执行。@GregSchmidt-我正在使用saveMany方法插入多行,该方法是一个查询。现在,我想根据条件在一个查询中更新多行,避免一次更新一行的循环。