У меня есть следующие Laravel запросаколлекции Заказ и реляционные коллекции Laravel
$user = $this->user; //current user (dispatcher)
//obtain list of dispatchers,trucks,deliveries,drivers,trailers
$dispatchers = $this->instance->user()->where('active', 1)->with(['truck.delivery' => function($query) use ($week_array) {
$query->where('delivery_date', '>=', Carbon\Carbon::parse($week_array[1]['date'])->toDateTimeString())->whereNotNull('driver_id')
->orderBy('delivery_date');
}])->with(['truck.trailer', 'truck.driver', 'truck.driver2', 'truck.trailer.trailerType'])->get()
->sortBy('name')->sortBy(function ($item) use ($user) {
return $item->id == $user->id ? 1 . $item->name : 2 . $item->name;
});
Моя цель состоит в том, чтобы иметь текущий пользователь, чтобы быть первым элементом в коллекции, а потом, я хочу иметь эту коллекцию в алфавитном порядке по Имя пользователя.
Кроме того, у меня возникает проблема, мне нужно отсортировать драйверы каждого пользователя (подмножество подмножества) в алфавитном порядке.
Сортировать уровень 1 для всей коллекции: $user fist, and then by $dispatchers->name
Сортировать уровень 2 для каждого элемента в коллекции: $dispatchers->truck->driver->first-name
Я был в состоянии создать свой род для 1-го уровня (если текущий пользователь всегда приходит на вверху), но я не могу сортировать коллекцию для каждого пользователя.
Конечный результат должен быть как (пользователи упорядоченных и их грузовики коллекция упорядоченных по именам драйверов в коллекции драйверов)
CURRENT USER (not matter the name)
Truck 50
Driver AA
Truck 45
Driver BB
Truck 56
Driver CC
USER A
Truck 10
Driver A
Truck 6
Driver B
Truck 20
Driver C
USER B
Truck 2
Driver D
Truck 3
Driver E
Truck 1
Driver F
USER C
Truck 30
Driver G
Truck 35
Driver H
Truck 13
Driver Z
т.д.