我需要保存多行,每行的条件不同。
喜欢:
Update orderdetails SET data = "'.$json1.'" WHERE order_id = 1;
Update orderdetails SET data = "'.$json2.'" WHERE order_id = 2;
Update orderdetails SET data = "'.$json3.'" WHERE order_id = 3;
Update orderdetails SET data = "'.$json4.'" WHERE order_id = 4;
Update orderdetails SET data = "'.$json5.'" WHERE order_id = 5;
我知道CakePHP的单行更新方法,我可以运行5次表单来更新所有行。
但我想通过只能在查询之上运行的一行代码来保存它。
我的代码
$update = array(
array('data' => $json1,'order_id' => 1),
array('data' => $json2,'order_id' => 2),
array('data' => $json3,'order_id' => 3),
array('data' => $json4,'order_id' => 4),
array('data' => $json5,'order_id' => 5)
);
$this->Orderdetail->saveMany($update);
那么,CakePHP中是否有任何方法可以实现它??
答案 0 :(得分:2)
如果我目前了解上述问题,您可以通过使用cakePHP中的saveMany函数来实现此目的。您所要做的就是以数组的形式转换要保存的数据,并将该单个数组传递给saveMany函数。
以下是cakePHP 3中上述详细信息的代码示例:
$saveData = [
[
'order_id' => 1,
'data' => $json1
],
[
'order_id' => 2,
'data' => $json2
],
[
'order_id' => 3,
'data' => $json3
],
[
'order_id' => 4,
'data' => $json4
],
[
'order_id' => 5,
'data' => $json5
]
];
$orderDetails = TableRegistry::get('Orderdetails');
$entities = $orderDetails->newEntities($saveData);
$result = $orderDetails->saveMany($entities);
对于cakePHP 2.x:
希望这就是你要找的东西。
编辑:根据更新的要求,我想实现它的唯一方法是使用Model->查询方法进行自定义查询。您必须为一次性更新所有记录的自定义查询形成。