deadloop
@deadloop
Активно осваиваю PHP

Как найти сумму по уникальному значению (дате и id) в базе?

Мне нужно найти сумму за каждый день в базе по дате и уникальному id.

Вот мой код, но я ни как не могу сообразить как найти сумму по дате, за каждый день.

iR6qWgx.png

$data = HistoryWeightRecord::get();

$date = [];

foreach ($data as $allDate) {
    $date[] = Carbon::parse($allDate->datetime)->format('Y-m-d');
}

$uniqueDate = collect($date)->unique();

$uniqueEquipment = $data->unique('equipment_id');

$sumArr = [];

foreach ($uniqueEquipment as $eqId) {

    foreach ($uniqueDate as $day) {
        $sum = HistoryWeightRecord::whereDate('datetime', $day)->sum('mass');
        $sumArr[$eqId->equipment_id] = $sum;
    }
}


Хочу получить такой результат
$arr = [
            '122' => [
                '2021-01-08' => 207,6
            ],
            '123' => [
                '2021-01-08' => 434,6,
                '2021-01-09' => 233,6,
                '2021-01-10' => 523,6,
            ]
        ];
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
deadloop
@deadloop Автор вопроса
Активно осваиваю PHP
Разобрался.

$data = HistoryWeightRecord::get();

        $date = [];
        foreach ($data as $allDate) {
            $date[] = Carbon::parse($allDate->datetime)->format('Y-m-d');
        }
        $uniqueDate = collect($date)->unique();

        $uniqueEquipment = $data->unique('equipment_id');

        $sumArr = [];
        foreach ($uniqueEquipment as $eqId) {
            foreach ($uniqueDate as $day) {
                $sum = HistoryWeightRecord::whereDate('datetime', $day)->where('equipment_id', $eqId->equipment_id)->sum('mass');
                $sumArr[$eqId->equipment_id][$day] = $sum;
            };
        }
        return $sumArr;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы