Группа Laravel Eloquent By Relation Sum () - PullRequest
0 голосов
/ 17 мая 2018

У меня есть 3 модели

  • Транзакция
  • Работа
  • Сервис

Мои отношения таковы:

Модель транзакции:

public function job() {
   return $this->belongsTo('App\Job');
}

Модель задания:

public function service() {
   return $this->belongsTo('App\Service');
}

Я пытаюсь запросить таблицу транзакций и суммироватьОбщая стоимость и группировка по услугам.

Моей первоначальной мыслью было запрос транзакций:

Transaction::with('job')->groupBy('job.service_id'); 

Это не работает, так как job.service_id не существует в таблице транзакций.

Моя другая мысльдолжен был сделать обратный вызов по запросу Transaction и выполнить запрос для каждого service_id в таблице заданий. Похоже, что это сработает, но это выглядит довольно длительным процессом.

Вывод моей цели:

  • service_id: 1
  • total_value: 100

  • service_id: 2

  • total_value: 300

Затем я запросил бы у таблицы служб имя службы.

1 Ответ

0 голосов
/ 18 мая 2018

Попробуйте этот запрос:

Transaction::join('jobs', 'jobs.id', 'transactions.job_id')
    ->join('services', 'services.id', 'jobs.service_id')
    ->select('services.id', \DB::raw('sum(transaction.value)')
    ->groupBy('services.id')
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...