2015-09-12 37 views
3

有沒有辦法將以下查詢重寫爲1個查詢?Laravel將2個更新查詢重寫爲1個

$this->template->whereId($id)->update(['default' => true]); 
$this->template->whereNotIn('id', $id)->update(['default' => false]); 

在此先感謝。

+0

DB ::僅原料。你能接受嗎? – M0rtiis

回答

0

您可以在一個MySQL查詢將它們組合起來(如果你使用MySQL),像這樣:

UPDATE template_table 
    SET default = CASE 
     WHEN id = $id THEN 1 
     WHEN id <> $id THEN 0 
     ELSE default = default 
    END 

然後你就可以使用DB ::原始()發送原始查詢數據庫。

+0

我想'ELSE默認'應該是。並且不需要ELSE – M0rtiis

0
DB::statement(" 
    UPDATE templates 
    SET default = 
     CASE 
      WHEN id = ? THEN 1 
      ELSE 0 
     END 
", [$id]); 

沒有其他(雄辯)的方式