Yii2、多行更新:
$sql = 'UPDATE category SET
parent = CASE id
WHEN 1 THEN 0
WHEN 2 THEN 1
ELSE parent
END,
title = CASE id
WHEN 1 THEN "строка 1"
WHEN 2 THEN "строка 2"
ELSE title
END
WHERE id IN (1, 2)
AND user_id = 15';
Yii::$app->db->createCommand($sql)
->execute();
任务是制作binding参数。在许多文档示例中,我看到了选择查询的绑定方法,而不是更新查询的单个方法/示例。
来自客户端的数据以 JSON 对象数组的形式出现[{"id":1,"user_id":15,"parent":0,"title":"строка"},{"id":2,"user_id":15,"parent":1,"title":"строка 1"}],MySql 版本为 8.0.18.0
控制器:
public function actionSaveCategory()
{
if (Yii::$app->request->isAjax) {
$request = Yii::$app->request->post('categories');
$categories = json_decode($request, true);
$model = new Category;
$rows = [];
foreach ($categories as $category) {
$model->load($category, '');
$model->id = $category['id'];
if (!$model->validate()) {
return 'error';
}
$rows[] = $model->attributes;
};
}
我知道 的存在batchInsert ... ON DUPLICATE KEY UPDATE,但是这里的数据来自客户端,我需要进行检查:AND user_id = 15
我征求意见,是否可以对update进行绑定,以及如何进行。
它会像
小提琴