2017-01-22 2 views
0

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

$sales = DB::table('sales') 
     ->join('drugs', 'drugs.id', '=', 'sales.drug_id') 
     ->select('sales.*','drugs.name', DB::raw('sum(sales.quantity_sold) as total_sales')) 
     ->whereYear('date_sold','>','2014') 
     ->whereYear('date_sold','<','2017')    
     ->get()->groupBy('sales.drug_id'); 

$stocks = DB::table('sales') 
     ->join('drugs', 'drugs.id', '=', 'sales.drug_id') 
     ->select('sales.*','drugs.name', DB::raw ('AVG(sales.quantity_sold) as average_sales')) 
     ->whereMonth('date_sold','=', Carbon::today()->month)    
     ->get()->groupBy('sales.drug_id'); 

$data = $sales->merge($stocks); 

На мой взгляд, я хочу иметь таблицу чего у меня будет наркотик, общий объем продаж и среднего объема продаж в ряд.

@foreach($data as $key => $item) 
    <tr id="item{{$item->id}}">                    <td>{{$item->name}}</td>  
       <td>{{$item->total_sales}}</td>  
       <td>{{number_format($item->average_stocks,0)}}</td> 

Любые предложения?

ответ

0

Во-первых, группа как объекты коллекции по общему полю (drug_id) как так:

$sales = DB::table('sales') 
     ->join('drugs', 'drugs.id', '=', 'sales.drug_id') 
     ->select('sales.*','drugs.name', DB::raw('sum(sales.quantity_sold) as total_sales')) 
     ->whereYear('date_sold','>','2014') 
     ->whereYear('date_sold','<','2017') 
     ->groupBy('sales.drug_id') 
     ->get()->groupBy('drug_id'); 

$stocks = DB::table('stocks') 
     ->join('drugs', 'drugs.id', '=', 'stocks.drug_id') 
     ->select('stocks.*','drugs.name', DB::raw ('AVG(stocks.quantity_sold) as average_stocks')) 
     ->whereMonth('date_sold','=', Carbon::today()->month) 
     ->groupBy('stocks.drug_id') 
     ->get()->groupBy('drug_id'); 

Затем слить обе коллекции, как так:

$data = $sales->merge($stocks); 

Наконец, вводят данные в вид с вашего контроллера:

return view('viewname', compact('data')); 
+0

Я получаю сообщение об ошибке, вызов функции-члена merge() для не-объекта – Ashley

+0

Можете ли вы dd ($ sales) проверить, как выглядят $ продажи? – Paras

+0

Для продаж :: массива: 3 [▼ 0 => {# 323 ▼ + "Название": "Изониазид, 300мг" + "total_sales": "409" } 1 => {# 324 ▼ + "название": "дапсон, 100mgs" + "total_sales": "256" } "имя" 2 => {# 325 ▼ +: "невирапин, 200mgs" + "total_sales": "384" } ] и для акций: массив: 3 [▼ 0 => {# 326 ▼ + "имя": "Изониазид, 300 мг" + "average_sales": "37,5000" } 1 => {# 327 ▼ + "na я ": "Dapsone, 100mgs" +" average_sales ": "20,8462" } 2 => {# 328 ▼ +" имя ": "невирапин, 200mgs" +" average_sales ": "32,0000" } ] – Ashley