0

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

提前致谢

4

2 回答 2

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 活动记录类

于 2013-05-03T17:26:22.507 回答
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()以查看它是否正在生成正确的查询字符串。

于 2013-05-03T06:44:22.330 回答