Как отсортировать по динамической колонке в Fluent Vapor 3 - PullRequest
0 голосов
/ 25 апреля 2018

Как мне выполнить SQL-запрос, подобный этому, в Fluent?

SELECT `book`.*
  FROM `book`
  JOIN `book_user` ON `book`.`id` = `book_user`.`bookId`
GROUP BY `book`.`id`
ORDER BY COUNT(`book`.`id`) DESC;

Я пытался добиться этого, используя:

Book.query(on: req)
    .join(UserBookPivot.self, field: \UserBookPivot.bookId, to: \Book.id, method: .inner)
    .group(by: \Book.id)
    .sort(\Book.id, .descending)
    .all()

, который только выдал запрос, подобный этому:

SELECT * 
--     ^
  FROM `book` 
  JOIN `book_user` ON `book`.`id` = `book_user`.`bookId` 
GROUP BY `book`.`id` 
ORDER BY `book`.`id` DESC;
--       ^^^^^^^^^^^

Все еще не может найти способ произвести ORDER BY COUNT(book.id) и SELECT book.*.

Возможно ли сделать это в текущей версии паров, кроме использования .simpleQuery(_:) вручную?

ENV:

Vapor: 3.0.0.rc-2.7

Свободно владею: 3.0.0.rc-2.3.3

Fluent-mysql: 3.0.0.rc-2.3

...