2014-10-29 4 views
2

Как новичок в Laravel, у меня были некоторые сомнения относительно формата даты и шаблонов клинков.Laravel groupby Week Обычный запрос

Я написал запрос, который вычитается правильным образом, Ниже приведен мой Яркий SQL-запрос.

public function orderbyweek() 
    { 

     $orderbyweek = DB::table('sales_flat_order_items as s') 
       ->leftJoin('sales_flat_orders as w', 'w.entity_id','=','s.order_id') 
       ->select(array(DB::Raw('sum(s.amount_refunded) as amount_refunded'), 
        DB::Raw('sum(s.row_total) as row_total'), 
        DB::Raw('sum(s.discount_amount) as discount_amount'), 
        DB::Raw('sum(s.tax_amount) as tax_amount'), 
        DB::Raw('sum(s.qty_ordered) as qty_ordered'), 
        DB::Raw('sum(w.subtotal) as subtotal'), 
        DB::Raw('WEEK(w.created_at) week'), 
        DB::Raw('sum(w.total_invoiced) as total_invoiced'), 
        DB::Raw('sum(w.shipping_amount) as shipping_amount') 
        )) 
       ->where('qty_canceled','=','0') 
       ->where('status','!=','canceled') 
       ->groupBy('week') 
       ->orderBy('w.created_at') 
       ->get(); 

      return View::make('sales_flat_orders.orderbyweek', compact('orderbyweek')); 


    } 

Это покажет мне таблицу, где я хочу неделю, как в интервале 7 дней. Итак, в моем шаблоне, что мне нужно делать? Как добавить формат даты для этого? Я сделал что-то здесь:

<table width="100%"> 
    <thead> 

     <th>DATE</th> 
     </thead> 

    @foreach($orderbyweek as $s) 

    <tr> 
    <td>{{date("d F, Y",strtotime($s->week))}}</td> 

    </tr> 

@endforeach 
</table> 

Я запрос SQL выполняется, который выглядит следующим образом:

select sum(s.amount_refunded) as amount_refunded, sum(s.row_total) as row_total, sum(s.discount_amount) as discount_amount, sum(s.tax_amount) as tax_amount, sum(s.qty_ordered) as qty_ordered, sum(w.subtotal) as subtotal, WEEK(w.created_at) week, sum(w.total_invoiced) as total_invoiced, sum(w.shipping_amount) as shipping_amount from `sales_flat_order_items` as `s` left join `sales_flat_orders` as `w` on `w`.`entity_id` = `s`.`order_id` where `qty_canceled` = '0' and `status` != 'canceled' group by `week` order by `s`.`created_at` asc 

Где я буду неправильно?

Я получаю ordebydate, orderbyyear тоже. Но не заказывал на Неделе

U can see the image of the table, Here see the week, Its not the porper one

Пожалуйста, помогите мне.

ответ

1

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

$data = \Invoice::select( 
         DB::raw("MONTHNAME(STR_TO_DATE(MONTH(date), '%m')) as month"), 
         DB::raw('SUM(g_total) as total_invoice_amnt'), 
         DB::raw('MONTH(date) as no_mnth') 
        ); 
        foreach ($filters as $filter) { 
         if ($filter[2] != '') { 
          $data->where($filter[0], $filter[1], $filter[2]); 
         } 
        } 
    $data = $data->groupBy("month") 
       ->OrderBy('no_mnth','ASC') 
       ->get() 
       ->toArray(); 

    return $data; 
+0

Это на самом деле сделано..но не получается, как это сделать в течение 7 дней, т.е. на неделю. –

+0

в вашем запросе вы пропустите что-то вроде этого DB :: Raw ('WEEK (w.created_at) week'), => DB :: Raw ('WEEK (w.created_at) как неделя'), –

+0

y эта двойная стрелка (=>) - der, U, несомненно, получит синтаксическую ошибку, и это не сработает. –

Смежные вопросы