Mysql 在Cakephp 3中,如何在单个查询中更新多行,每行具有不同的条件?
在CakePHP3中,我需要在一个查询中更新多行。要插入多行,我使用了以下查询: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){ $
$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方法插入多行,该方法是一个查询。现在,我想根据条件在一个查询中更新多行,避免一次更新一行的循环。