0
を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(の並べ替えを作成することができましたtop)、各ユーザーのコレクションを並べ替えることができません。
最終的な結果は、それが私の作品(ドライバコレクションにドライバ名順命じユーザーとそのトラックコレクション)
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
など