Добрый день. Есть таблица books и таблица apartments. В таблице books есть колонка apartment_id, которая связана с apartments. Получаю все таким образом: Код (Text): Apartment::with('book')->with('user')->paginate(10); Вот, надо отсортировать по order by вывод apartments.
@alex.kot, а доку открыть никак? Такой же orderBy https://laravel.com/docs/master/eloquent#retrieving-models
Проблема в том что надо сортировать так чтоб, чем больше кол-во apartments_id в таблице books, тем выше его выводить, а не просто до числу apartments_id.
@Dimon2x, как обычно, мимо. @alex.kot, ну тут надо запросик посложнее. Или денормировать таблицу. Мне сейчас прямо составлять лениво, может позже. --- Добавлено --- Подскажу только, что тебе надо join делать с запросом Код (Text): select count(1), appartment_id from books group by apparment_id
Если связи в классах описаны, попробуй так: PHP: Apartment::withCount('book')->orderBy('book_count', 'desc')->get(); Чтобы посмотреть какой реально генерируется SQL-запрос, надо ->get() надо заменить на ->toSql() и вывести как строку. Будет что-то вроде Код (SQL): SELECT `apartments`.*, (SELECT COUNT(*) FROM `books` WHERE `apartmets`.`id` = `books`.`apartment_id`) AS `books_count` FROM `apartments` ORDER BY `books_count` DESC --- Добавлено --- P.S. странный парсер ббкода тут. он сам преобразует служебные слова в верхний регистр (и может ошибаться)
Это же можно так: PHP: SELECT apartments.*, books_count FROM( SELECT apartments_id AS id, COUNT(*) AS books_count FROM books GROUP BY apartments_id)AS b JOIN apartments USING(id) ORDER BY books_count DESC
Как? (у меня сломался внутренний парсер и я не могу представить себе как с помощью связей получить eloquent`ом такой вариант запроса)