使用CodeIgniter Active Record转换MySQL查询

时间:2013-05-03 06:33:37

标签: mysql codeigniter

任何人都可以将普通的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但无法找到正确的解决方案。

提前致谢

2 个答案:

答案 0 :(得分:1)

$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,将阻止数据被转义。

CI Active Record Class

答案 1 :(得分:0)

这是一种简单的方法

$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()以查看它是否生成了正确的查询字符串。