2017-01-28 2 views
1

Ich brauche nach Abfrage von SQL mit Eloquent erhalten, erstellen groupBy('date') und sortBy('price') mit collect in Laravel 5.3.Wie sortBy nach groupBy in Collect in Laravel 5.3 zu verwenden?

In IndexController:

$flights = Flights::GetFlights($fromCity, $toCity, $fromDate); 

$collection = collect($flights); 

$sortFlight = $collection->groupBy('date')->sortBy('price'); 

In Model:

public function scopeGetFlights($query, $fromCity, $toCity, $fromDate) 
{ 
    // Between dates 
    $beforeDate = date('Y-m-d', strtotime($fromDate . '- 10 days')); 
    $afterDate = date('Y-m-d', strtotime($fromDate . '+ 10 days')); 

    $join = $query 
     -> join('airlines', 'airlines.pana', 'flights.airline') 
     -> where('flights.from_city', $fromCity) 
     -> where('flights.to_city', $toCity) 
     -> whereBetween('flights.date', [$beforeDate, $afterDate]) 
     -> get([ 
       'flights.*', 
       'airlines.pana as pana', 
       'airlines.name as airlineName' 
       ]); 
    return $join; 
} 

Dann Print_r($sortFlight), groupBy('date') Nach Druck ist funktioniert aber sortBy('price') funktioniert nicht !!!!

Wo ist mein Problem?

+0

Hallo @Punit .. So verwenden Sie 'sortBy ('flights.price')' in collect? – mySun

Antwort

2

Vom doc

Die sortBy Methode sortiert die Sammlung durch den gegebenen Schlüssel. Die sortierte Sammlung hält die Original-Array-Schlüssel, so dass in diesem Beispiel haben wir die Werte Methode verwenden, werden die Schlüssel zu durchnumeriert Indizes zurück:

So nachdem ich groupBy() tun wie folgt.

$sorted = $collection->sortBy('price'); 
$sorted->values()->all(); 
+0

Hallo, Wie benutzt man 'groupBy' in Collect? – mySun

+0

Die Art, wie Sie groupBy() gemacht haben, ist korrekt. Fügen Sie einfach den sortBy() -Teil zum Ergebnis von groupBy() hinzu. – Gayan

+0

Außerdem müssen Sie '$ collection = collect ($ flights);' nicht machen. do 'GetFlights() -> get()' und es ist eine Sammlung. – Gayan

1

Versuchen Sie, diese einzelne Zeile

$sortFlight = $collection->groupBy('date')->sortBy('price')->values()->all(); 
+0

Hallo, '$ collection-> groupBy ('Datum') -> sortBy ('Preis') -> Werte() -> all();' funktioniert nicht! – mySun

+0

Nein, ich möchte nicht "groupBy" in Eloquent. Ich brauche zu sammeln. – mySun

+0

was wollen Sie zuerst groupby Termine und mit dieser Gruppe nach Preis oder nach Gruppierung nach Datum sortieren wieder sortieren nach Preis in ganze Abfrage? – Vikash