Я хочу разбить порядок страниц по ссылкеscount em ASC …
Таблицы страниц:
----------------------
id | name
----------------------
1 | Globo
----------------------
2 | Google
----------------------
3 | MC Donalds
----------------------
4 | Habibs
Запрос к РЕЗУЛЬТАТАМ ПЕРВОЙ СТРАНИЦЫ (заказ / запрос в порядке):
$pages = Mypages::where('pages.author_id', auth()->user()->id)
->orderBy('linkscount', 'desc')
->leftJoin('links', 'links.page_id', '=', 'pages.id')
->selectRaw('pages.*, count(links.id) as linkscount')
->groupBy('pages.id')
->take(2)
->get();
Запрос TO PAGINATE (заказ / запрос не в порядке):
$pages = Mypages::where('pages.author_id', auth()->user()->id)
->orderBy('linkscount', 'asc')
->leftJoin('links', 'links.page_id', '=', 'pages.id')
->selectRaw('pages.*, count(links.id) as linkscount')
->groupBy('pages.id')
->where('pages.id', '>', $id)
->take(2)
->get();
Этот запрос ничего не возвращал, это было возвращение «MC Donalds» …
$ id = LAST ID отображается
Как сказал в комментарии Джейкоб Х., это не настоящий SQL, потому что для группирования по функциям нужно иметь все столбцы запроса, которые есть у вас в select, кроме таких функций, как count, sum и т. Д.
Для этого примера вам нужно поместить pages.name и pages.id в группу
$pages = Mypages::where('pages.author_id', auth()->user()->id)
->orderBy('linkscount', 'asc')
->leftJoin('links', 'links.page_id', '=', 'pages.id')
->selectRaw('pages.id, pages.name, count(links.id) as linkscount')
->groupBy('pages.id', 'pages.name')
->where('pages.id', '>', $id)
->take(2)
->get();
И если вы отправляете правильный $id
все вроде нормально.
Других решений пока нет …