2013-05-03 96 views
0

任何人都可以將普通的mysql查詢轉換爲codeigniter update strcuture。使用CodeIgniter Active Record轉換MySQL查詢

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,但無法找到正確的解決方案。

在此先感謝

回答

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

+0

感謝你的幫助,它運作良好:) – Ajeesh 2013-05-10 06:15:44

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()後,看它是否是正確生成查詢字符串。

+0

沒有,CI接受你的條件值 – Aurel 2013-05-03 17:31:39

相關問題