Eloquent - объединение результатов двух запросов с агрегатом / суммой. - PullRequest
0 голосов
/ 14 февраля 2019

Я часами пытался получить это, но мог бы помочь.У меня есть следующие 2 запроса, которые суммируют столбцы в одной и той же модели, но для одной из сумм требуется условие where.

В SQL я думаю, что это будет относительно простой подвыбор, но я не могу заставить его работать вeloquent.

public function receivedContents() : Collection
{
    return $this->stockMovements()
        ->with('product')
        ->groupBy('product_id')
        ->where(function($query){
            $query->where('action', 'receive')->orWhere('action', 'void_receive');
        })
        ->get([DB::raw('SUM(received) as received_qty'), 'product_id']);
}

public function liveContents() : Collection
{
    return $this->stockMovements()
        ->with('product')
        ->groupBy('product_id')
        ->get([DB::raw('SUM(received) + SUM(processed) as live_qty'), 'product_id']);
}

Я ищу результат с:

  • product_id
  • receive_qty (сумма полученных, когда действие получено или void_received)
  • live_qty (простая сумма или полученные + обработанные столбцы)

В идеале я хочу сохранить это в красноречивой коллекции, чтобы по-прежнему иметь доступ к отношениям моделей.

Любойпомощь будет высоко ценится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...