【问题标题】:How to sum column during week of the last record?如何在最后一条记录的一周内对列求和?
【发布时间】:2020-06-16 15:36:02
【问题描述】:

我假设用户最后一次活动的记录日期为 13.04.2019 。我想总结属于最后一条记录的一周中的所有记录。


例如:

created_at = 13.04.2019,活动 = 3

created_at = 11.04.2019,活动 = 3

created_at = 01.04.2019,活动 = 3

//以上3条记录不是同一周。我需要上周对活动进行求和,因此求和的结果将是 6


我怎么能用 Carbon 或其他人做到这一点

$sum_last_week = Model::where('user_id',$user->id)->orderby('id','desc')->sum('activity')
....

【问题讨论】:

标签: php laravel php-carbon


【解决方案1】:

首先检索最后一个活动日期,

$model = Model::where('user_id', $user->id)->orderby('created_at',desc)->first();

然后,根据上述结果生成目标范围

$testDate=$model->created_at;
$from = $testDate->startOfWeek()->format('Y-m-d H:i');
$to = $testDate->endOfWeek()->format('Y-m-d H:i');

最后,检索总和

$result =Model::whereBetween('created_at', [$from, $to])->sum('activity');

【讨论】:

  • created_at是一个日期列,所以不需要->format(),直接传Carbon实例即可。
【解决方案2】:

whereBetween 方法验证列的值是否介于两个值之间。

$from = date('Y-m-d',strtotime('-7 days'));  
$to = date('Y-m-d');
$last_week = Model::whereBetween('created_at', [$from, $to])->get();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多