Мне нужно отсортировать мою коллекцию по дате, а затем отсортировать строки с одинаковой датой по расстоянию.
Я проделал тот же процесс, когда работал со статусом и расстоянием, это было проще, потому что язнаю значения статуса, по которым я хочу отсортировать коллекцию, теперь с датами, которые я не могу исправить, это значения.
Вот моя работа со статусом:
if($result){
if($data['status'] == true){
$result = $result->sortBy('listing.status')->values();
if($sqlDistance != null){
$res = $result->where('distance_km', '!=', null);
$resNull = $result->where('distance_km', '=', null)->all();
$statusNotPlanned = $res->where('listing.status', 0)->sortBy('distance_km')->values()->all();
$statusPlanned = $res->where('listing.status', 1)->sortBy('distance_km')->values()->all();
$statusDone = $res->where('listing.status', 2)->sortBy('distance_km')->values()->all();
$res = array_merge($statusNotPlanned, $statusPlanned, $statusDone);
$result = array_merge($res, $resNull);
}
return response()->json(['status' => 200,'type' => 'status', 'data' => $data, 'events' => (is_object($result)) ? array_slice($result->toArray(),$data['offset']*10,10) : array_slice($result,$data['offset']*10,10), 'cities' => $cities]);
}
Теперь мне нужно сделатьто же самое, но с датой вместо статуса:
Вот где я сейчас нахожусь:
elseif($data['date'] == true ) {
$result = $result->sortBy('date_end')->values();
$res = $result->where('date_end', '!=', null)->all();
$resNull = $result->where('date_end', '=', null)->all();
$result = array_merge($res, $resNull);
return response()->json(['status' => 200,'type' => 'date', 'data' => $data, 'events' => (is_object($result)) ? array_slice($result->toArray(),$data['offset']*10,10) : array_slice($result,$data['offset']*10,10), 'cities' => $cities]);
}
Это мой текущий вывод:
{
date_end : 12/07/2018,
distance : 320km
},
{
date_end : 12/08/2018,
distance : 110km
},
{
date_end : 12/08/2018,
distance : 100km
},
{
date_end : 12/08/2018,
distance : 120km
},
{
date_end : 12/09/2018,
distance : 480km
}
Это желаемый вывод:
{
date_end : 12/07/2018,
distance : 320km
},
{
date_end : 12/08/2018,
distance : 100km
},
{
date_end : 12/08/2018,
distance : 110km
},
{
date_end : 12/08/2018,
distance : 120km
},
{
date_end : 12/09/2018,
distance : 480km
}