任何人都可以将普通的mysql查询转换为codeigniter更新结构吗?
UPDATE game_rounds
SET from_score = CASE WHEN from_id = 2 THEN 65 ELSE from_score END,
to_score = CASE WHEN to_id = 2 THEN 65 ELSE to_score END
WHERE round_id=5
我尝试了 update_batch 但找不到正确的解决方案。
提前致谢
任何人都可以将普通的mysql查询转换为codeigniter更新结构吗?
UPDATE game_rounds
SET from_score = CASE WHEN from_id = 2 THEN 65 ELSE from_score END,
to_score = CASE WHEN to_id = 2 THEN 65 ELSE to_score END
WHERE round_id=5
我尝试了 update_batch 但找不到正确的解决方案。
提前致谢
$this->db
->set('from_score', 'CASE WHEN from_id = 2 THEN 65 ELSE from_score END', FALSE)
->set('to_score', 'CASE WHEN to_id = 2 THEN 65 ELSE to_score END', FALSE)
->where('round_id', 5)
->update('game_rounds');
$this->db->set() 使您能够设置插入或更新的值。它可以用来代替将数据数组直接传递给插入或更新函数。
可选的第三个参数($escape),如果设置为 FALSE,将防止数据被转义。
这是一个简单的方法来做到这一点
$data['from_score'] = 'CASE WHEN from_id = 2 THEN 65 ELSE from_score END';
$data['to_score'] = 'CASE WHEN to_id = 2 THEN 65 ELSE to_score END ';
$this->db->where('round_id',5);
$this->db->update('game_rounds',$data);
之后运行echo $this->db->last_query()
以查看它是否正在生成正确的查询字符串。