使用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所说,我相信这是实现它的最好方式。 –