获取数据库“金额”列的总和

时间:2019-04-25 09:11:25

标签: php laravel

我的数据库中有表列datestatusamount。因此,我想查询两个日期之间的总和,例如开始日期和结束日期以及特定的日期金额。但是一个问题是,如果日期从“ 2019-03-27”到“ 2019-04-25”这样的日期,则意味着获取状态为“ {{1}”的amount字段的所有记录的最近30天按日期求和}'。当那个月的两个月的日期不同的时候发生问题。我想要这张图https://prnt.sc/ngq5ky

的全部内容
Winner

2 个答案:

答案 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()之类的任何地方调用它。