Я пытаюсь получить все записи в модальном порядке Roleplay
с помощью payslips_collected ASC
(по возрастанию).
Восхождение должно начинаться с наименьшего значения и идти вверх. Я этого не понимаю … вот мой результат таблицы, которую я сделал.
+----+------------------+--------+-------------+-----------------+-----------------+--------------+-----------+ | ID | Username | Shifts | Completed | Registered | Website Login | Client Login | Last Seen | +----+------------------+--------+-------------+-----------------+-----------------+--------------+-----------+ | 1 | Danny Fure | 29 | 1 year ago | 43 minutes ago | 43 minutes ago | 1 second ago | | | 2 | James Mack | 0 | 1 year ago | 1 second ago | 2 days ago | 1 second ago | | | 3 | Peter Barlow | 0 | 1 year ago | 1 second ago | 2 days ago | 1 second ago | | | 4 | Adam Chapman | 0 | 1 year ago | 1 second ago | 2 days ago | 1 second ago | | | 5 | Danny Burrows | 0 | 1 year ago | 1 second ago | 2 days ago | 1 second ago | | | 6 | Kieran Root | 0 | 1 year ago | 1 second ago | 2 days ago | 1 second ago | | | 8 | Ashton David | 0 | 1 year ago | 1 second ago | 2 days ago | 1 second ago | | | 9 | Someone Special | 0 | 1 year ago | 1 second ago | 2 days ago | 1 second ago | | | 10 | Kelly Clark | 0 | 1 year ago | 1 second ago | 2 days ago | 1 second ago | | | 11 | Abbie Grove | 0 | 1 year ago | 1 second ago | 2 days ago | 1 second ago | | +----+------------------+--------+-------------+-----------------+-----------------+--------------+-----------+
Мне жаль, что он немного испортился, он не форматировался правильно. Но в любом случае основной проблемой является ее показ в порядке DESC
(нисходящий), показывающий наивысший уровень до самого низкого.
Может ли кто-нибудь сказать мне, почему он это делает?
Необработанный запрос:
select * from `users` where exists (select * from `srp_user_statistics` where `users`.`id` = `srp_user_statistics`.`user_id` order by `payslips_collected` asc)
Код:
$players = Player::whereHas('roleplay', function ($query) use($orderType) { $query->orderBy('payslips_collected', $orderType); });
Я думаю, что вы так любите, потому что вы используете порядок для подзапроса, а не для основного запроса выбора, поэтому постарайтесь написать порядок посторонней стороне,
Как это
$players = Player::whereHas('roleplay', function ($query) use($orderType) { $query->orderBy('payslips_collected', $orderType); })->orderBy('id', $orderType);
Редактировать:-
select `users`.* from `users` join `srp_user_statistics` on `users`.`id` = `srp_user_statistics`.`user_id` order by `srp_user_statistics.payslips_collected` asc
Попробуй это
$players = Player::has('roleplay') ->orderBy('payslips_collected', $orderType) // ...
Вы можете отсортировать коллекцию результатов:
$sorted_players = $players->sortByDesc('payslips_collected');
Или просто измените свои фактические результаты
$sorted_players = $players->reverse();