使用Query Scope。他們將非常方便
class Stats extends Eloquent{
public function scopefileStats($query, $timeFrame){
$query->where('user_id', = ,Auth::user()->id);
$query->where('created_at','>', DB::raw($timeFrame));
$query->where('type','=','FILE');
}
public function scopelinkStats($query,$timeFrame){
$query->where('user_id', = ,Auth::user()->id);
$query->where('created_at','>', DB::raw($timeFrame));
$query->where('type','=','LINK');
}
public function scopereferralStats($query,$timeFrame){
$query->where('user_id', = ,Auth::user()->id);
$query->where('created_at','>', DB::raw($timeFrame));
$query->where('type','=','REFERRAL');
}
}
檢索數據
Stats::fileStats('date_sub(NOW(), INTERVAL 1 MONTH)')->sum('amount');
Stats::linkStats('date_sub(NOW(), INTERVAL 1 MONTH)')->sum('amount');
Stats::referralStats('date_sub(NOW(), INTERVAL 1 MONTH)')->sum('amount');
這大概是你能做到這一點的方法之一,但你總是可以自定義上面的代碼按你的舒適性的因素。
我不會在一個查詢中做到這一點,但許多查詢:每個時間範圍內都有一個查詢。這是否有助於您提出解決方案? – Halcyon
@FritsvanCampen是的,我當然可以做到這一點,但它只是感覺有點「浪費」。如果我這樣做,最好爲每個時間範圍運行一個查詢,然後SUM數量col? – Prash
正如@FritsvanCampen所說,我相信這是實現它的最好方式。 –