2016-05-26 8 views
0

Liebe Freunde Ich brauche Hilfe,Monatsname, um durch in mysql

Diese meine Frage ist,

$customer = DB::table('customer'); 
$customer->join('customer_month_calender', 
    'customer_month_calender.customer_id', '=', 'customer.id','left'); 

$customer->select('customer.id','customer_month_calender.month'); 
//$customer->where(DATE_FORMAT(month,'%m')=date('m',strtotime('+1 month'))); 
$customer->orderBy('customer_month_calender.month', 'create_date'); 
$customer->groupBy('customer.id'); 

return $customer->get(); 

Diese Abfrage Rückgabewerte für,

April 
August 
December 
February 
January 
July 
June 

Allerdings wollte ich haben Der Monat Namen in der Reihenfolge von

(dh Januar, Februar, Mar .. ein so weiter, bis die letzte ist Dezember).

Bitte helfen. Danke im Voraus.

+0

Ist es eine Array-Rückgabe von $ customer-> get(); ? – PHJCJO

+0

ja es ist ein Array –

+0

'ORDER BY Feld (customer_month_calender," Januar "," Februar "," Mar "ein so weiter, bis die letzte ist" Dezember ")' – splash58

Antwort

0

Sie können Abfrage so schreiben mit orderBy mit raw query:

$customer = DB::table('customer'); 
$customer->join('customer_month_calender', 
    'customer_month_calender.customer_id', '=', 'customer.id','left'); 

$customer->select('customer.id','customer_month_calender.month'); 
//$customer->where(DATE_FORMAT(month,'%m')=date('m',strtotime('+1 month'))); 
$customer->orderBy(DB::raw('month(create_date) ASC')); 
$customer->groupBy('customer.id'); 

return $customer->get(); 
+0

Ich habe versucht, wie Sie beschrieben. aber ich habe den Fehler –

+0

welchen Fehler haben Sie? – Ali

+0

Unbekannte Spalte 'create_date' in 'Bestellklausel' (SQL: wählen Sie 'customer'.id',' customer_month_calender' 'month' von' customer' verlassen links 'customer_month_calender' auf' customer_month_calender'.customer_id' = 'customer '.'id' Gruppe nach' customer'.id' Reihenfolge nach Monat (create_date) asc) –

0

Wenn Sie mit this Mysqli Klasse, könnten Sie versuchen, mit

$customer->orderBy('MONTH(create_date)', 'ASC'); 

Mit roher query:

ORDER BY MONTH(create_date) 

Natürlich können Sie anpassen, um zu passen Ihre Bedürfnisse

0
$customer = DB::table('customer'); 
$customer->join('customer_month_calender', 
    'customer_month_calender.customer_id', '=', 'customer.id','left'); 

$customer->select('customer.id','customer_month_calender.month'); 
//$customer->where(DATE_FORMAT(month,'%m')=date('m',strtotime('+1 month'))); 
$customer->orderBy('customer_month_calender.month ASC'); 
$customer->groupBy('customer.id'); 

return $customer->get();