Как просуммировать столбец за неделю последней записи? - PullRequest
2 голосов
/ 16 июня 2020

Я предполагаю, что датой записи последней активности пользователя является 13.04.2019. Я хочу просуммировать все записи за неделю, относящиеся к последней записи.


Пример:

created_at = 13.04.2019, activity = 3

created_at = 11.04.2019, activity = 3

created_at = 01.04. .2019, activity = 3

// указанные выше 3 записи не на той же неделе. Мне нужно на прошлой неделе суммировать активности, чтобы результат был 6


Как я могу сделать это с Carbon или другими

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

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Сначала получить последнюю активную дату,

$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');
0 голосов
/ 16 июня 2020

Метод whereBetween проверяет, находится ли значение столбца между двумя значениями.

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