Порядок сортировки красноречивых отношений - PullRequest
0 голосов
/ 29 мая 2018

У меня возникла проблема с сортировкой коллекции laravel.Я создал запрос следующим образом.

 $schoolBookings = SchoolModel::with(['bookings.crts',
                        'bookings.crts.users' => function($que) {
                            $que->orderBy('first_name', 'ASC');
                        }
                        , 'schoolType',
                        'bookings.crts.teachingSpecializations',
                        'bookings' => function($que) use($filters, $input) {
                            if (!empty($input['start_date'])) {
                                $que->where('booked_on', '>=', $input['start_date']);
                            }
                            if (!empty($input['end_date'])) {
                                $que->where('booked_on', '<=', $input['end_date']);
                            }
                            $que->where('booked_on', '<=', date("Y-m-d 00:00:00"));
                            $que->orderBy('booked_on', 'desc');
                        },])
                    ->where(function($que) use ($filters) {
                        if (!empty($schoolId)) {
                            $que->where('id', $schoolId);
                        }
                    })
                    ->get()->toArray();

Как вы показываете, сортировка по бронированию работает нормально.Но я хочу сортировать по дате бронирования.Тогда по имени пользователя ЭЛТ первое имя здесь, которое я получаю.

Booking_date,  booking_id  USER_NAME    day
29/05/2018 -- 392514 --  Ehsanullah Islami Full day 
28/05/2018 -- 881393 --  Patricia Louden Full day 
28/05/2018 -- 848449 --  Ehsanullah Islami Full day
28/05/2018 -- 438674 --  Kirsten Wheeler Full day 
28/05/2018 -- 692704 --  Juliete Reim Full day
28/05/2018 -- 594508 --  Kasandra Kulas Full day 
28/05/2018 -- 737695 --  Roland Clements Full day 

Может кто-нибудь подсказать, как можно отсортировать заказ, заказав это, чем имя пользователя ЭЛТ по алфавиту.

Спасибо.

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете попробовать следующее, которое отсортирует после завершения запроса.

 $schoolBookings = SchoolModel::with(['bookings.crts',
                        'bookings.crts.users' => function($que) {
                            $que->orderBy('first_name', 'ASC');
                        }
                        , 'schoolType',
                        'bookings.crts.teachingSpecializations',
                        'bookings' => function($que) use($filters, $input) {
                            if (!empty($input['start_date'])) {
                                $que->where('booked_on', '>=', $input['start_date']);
                            }
                            if (!empty($input['end_date'])) {
                                $que->where('booked_on', '<=', $input['end_date']);
                            }
                            $que->where('booked_on', '<=', date("Y-m-d 00:00:00"));
                            $que->orderBy('booked_on', 'desc');
                        },])
                    ->where(function($que) use ($filters) {
                        if (!empty($schoolId)) {
                            $que->where('id', $schoolId);
                        }
                    })
                    ->get()->sortBy('bookings.booked_on')->toArray()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...