2015-03-13 37 views
0

我需要一個相對簡單的語句,在此模型上根據兩列(小時和分鐘)對模型進行排序。基於兩欄的組合值檢索模型?

以下工作

$recipes->where('minutes','>', $minTime)->get(); 

但我真正想要做的是

$recipes->where('hours * 60 + minutes','<', $minTime)->get(); 

可悲的是這句法不可用,我一直在與幾個其他的解決方案,但我有亂搞無法解決它。

我一直希望有一些方向,因爲我已經卡住了!

回答

2

默認情況下,Laravel在where語句中使用綁定並將其轉義。要做到計算和這樣的,使用whereRaw

$recipes->whereRaw('hours * 60 + minutes < '.$minTime)->get(); 

但是現在查詢很容易受到SQL注入,以避免手動創建一個綁定:

$recipes->whereRaw('hours * 60 + minutes < ?', [$minTime])->get(); 

相反的whereRaw你也可以使用DB::raw()內正常where功能:

$recipes->where(DB::raw('hours * 60 + minutes'),'<', $minTime)->get(); 

這告訴Laravel不要逃避這部分查詢。