Вставить запрос внутри запроса в Laravel 5.8 - PullRequest
1 голос
/ 09 апреля 2019

У меня есть эта функция на контроллере для распечатки ежемесячного отчета. Отчет отображает сальдо за предыдущие месяцы и отображает входные и выходные данные транзакций из запасов за определенный месяц.

Я пробовал транзакции запросов в этом месяце, но я не могу вставить запрос баланса из предыдущих месяцев в одну таблицу.

public function p_report(Request $request) {
    $report = DB::table('unit as u')
    ->select('u.id','name_u',
        'price',
        DB::raw('sum(qty_in) vol_in'),
        DB::raw('sum(price*qty_in) qty_ins'),
        DB::raw('sum(qty_out) vol_out'),
        DB::raw('sum(price*qty_out) qty_outs'),
        DB::raw('sum(qty_in)-sum(qty_out) vol_end'),
        DB::raw('sum(price*qty_in)-sum(price*qty_out)qty_end')
        )
    ->leftJoin('transaction as t', 't.unit_id', '=', 'u.id')
    ->where('status',1)
    ->where('type_unit', '=' , $request->type_unit)
    ->whereMonth('date_transaction','=', $request->month)
    ->whereYear('date_transaction', '=' , $request->year)
    ->groupBy(['u.id','name_u','price'])
    ->orderBy('name_u')
    ->get();

    foreach ($report as $reports) {
        $balance = DB::table('unit as u')
       ->select(
          DB::raw('sum(price*qty_in)-sum(price*qty_out) qty_balance')
          )
       ->leftJoin('transaction as t', 't.unit_id', '=', 'u.id')
       ->where('u.id', '=' , $reports->id)
       ->whereMonth('date_transaction','<', $request->month)
       ->whereYear('date_transaction', '=' , $request->year)
       ->get();
        $reports->qty_balance = $balance;
     }

    return view ('report/p_report', compact('report','balance','reports'));
}

Могу ли я вставить запрос в другой запрос в одну таблицу? Я пытался, но результат, как этот, я хочу, чтобы qty_balance отображал значение не внутри коллекции, как это:

    Collection {#247 ▼
  #items: array:3 [▼
    0 => {#245 ▼
      +"id": 3
      +"name_unit": "Folio"
      +"price": 40000
      +"vol_in": "81"
      +"qty_ins": "3240000"
      +"vol_out": "16"
      +"qty_outs": "640000"
      +"vol_end": "65"
      +"qty_end": "2600000"
      +"qty_balance": Collection {#262 ▶}
    }
    1 => {#246 ▼
      +"id": 5
      +"name_unit": "Pulpen"
      +"price": 50000
      +"vol_in": "100"
      +"qty_ins": "5000000"
      +"vol_out": "23"
      +"qty_outs": "1150000"
      +"vol_end": "77"
      +"qty_end": "3850000"
      +"qty_balance": Collection {#267 ▶}
    }
  ]
}

1 Ответ

0 голосов
/ 12 апреля 2019

Вы можете попробовать использовать:

Думаю, не имеет смысла "смешивать" запросы.

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