簡體   English   中英

分頁雄辯

[英]Pagination eloquent

我想按linkscount 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 =顯示最后一個ID。

就像雅各布·H(Jacob H)在評論中說的那樣,這不是真正的SQL,因為group by function需要具有查詢中所有您選擇的列,除了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 ,則一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM