我的数据库中有表列date
,status
和amount
。因此,我想查询两个日期之间的总和,例如开始日期和结束日期以及特定的日期金额。但是一个问题是,如果日期从“ 2019-03-27
”到“ 2019-04-25
”这样的日期,则意味着获取状态为“ {{1}”的amount
字段的所有记录的最近30天按日期求和}'。当那个月的两个月的日期不同的时候发生问题。我想要这张图https://prnt.sc/ngq5ky
Winner
答案 0 :(得分:0)
您可以使用Eloquent实现相同的功能,但不了解您的模型,这是使用查询生成器的一种解决方案:
DB::table('bid_project')
->where('status', 'Winner')
->whereBetween('date', [$dt_startDate, $dt_endDate])
->sum('amount');
如果您的日期已经被格式化为Y-m-d
,那么您只需要在上面的数组中传递它们即可。或者将它们作为Carbon实例传递,一切都应该很好。
答案 1 :(得分:0)
如果总是这样,您可以使此查询更加“雄辩”:
在your_model_name.php模型中:
public function scopegetAmoutByDate($fromDate, $toDate)
{
return DB::table('bid_project')
->where('status', 'Winner')
->whereBetween('date', array($fromDate, $toDate))
->sum('amount')
->get();
}
然后,从控制器调用此方法:
ModelName::getAmoutByDate('2019-03-15', '2019-03-18');
仅将getAmoutByDate()前缀作为作用域。这将成为scopegetAmoutByDate()。
现在,您可以从ModelName :: getAmoutByDate()之类的任何地方调用它。