2014-04-27 59 views
0

有沒有一種合適的方法來簡化此查詢從使用3個單獨的查詢到僅使用1?如您所見,每個INSERT都基於字段optionuser_idMySQL:僅使用單個查詢基於2個字段更新多個行

DB::update(' 
    UPDATE bd_useroptions SET `value` = ? 
     WHERE `option` = ? AND user_id = ?', 
    array($page_pagination, 'page_pagination', $user->id)); 

DB::update(' 
    UPDATE bd_useroptions SET `value` = ? 
     WHERE `option` = ? AND user_id = ?', 
    array($newsletter, 'newsletter', $user->id)); 

DB::update(' 
    UPDATE bd_useroptions SET `value` = ? 
     WHERE `option` = ? AND user_id = ?', 
    array($shortcuts, 'shortcuts', $user->id)); 

回答

2
DB::update("UPDATE bd_useroptions SET value = CASE 
    WHEN option = 'page_pagination' THEN ? 
    WHEN option = 'newsletter' THEN ? 
    WHEN option = 'shortcuts' THEN ? 
    END 
WHERE user_id = ?", 
array($page_pagination, $newsletter, $shortcuts, $user->id)); 
+0

謝謝!這正是我正在尋找的。 – enchance

+0

剛剛補充缺失END –

+0

我這麼認爲。但是,我已經注意到它並將其添加到我的項目中,這沒有問題。 – enchance