如何根据特定列排序后获得除前5条记录以外的所有记录

时间:2018-09-29 06:24:14

标签: mysql laravel laravel-5

我有18条记录是根据特定的列排序的。

必须首先显示前5条记录,当单击特定按钮时,必须显示其他记录。

我该怎么办?我应该使用javascript吗?
这是我的查询...

public function theMostImportant()
{
    // return  CategoryActivity::all()->sortByDesc("priority")->take(5);
    return  CategoryActivity::all()->sortByDesc("priority");
}

在我看来,我的代码是这样的:

@foreach($priorityProjectCategory as $importantCategory)

    {{--{{dd($importantCategory)}}--}}

    <li><a href="#" data-filter=".{{str_replace(' ','',$importantCategory['faName'])}}"
        class="current">{{$importantCategory['faName']}}
        <sup></sup>
    </a></li>
@endforeach

3 个答案:

答案 0 :(得分:2)

您可以考虑Laravel的默认分页功能。 see here

或者您可以创建一条/ categories?page = 3这样的路由,该路由将页面作为URL查询并执行;

$page = $request->query['page'];
$pageSize = 5;
$categories = CategoryActivity::all()->sortByDesc("priority")->offset($pageSize*($page-1))->limit($pageSize);

不过我还是推荐。

答案 1 :(得分:1)

看来您基本上需要显示具有分页功能的更多功能。

您可以使用-> take(5)在首次页面加载中加载前五个记录,并可以显示在视图刀片文件中。

然后最好使用JS在单击按钮时以ajax请求异步加载其他记录。

在ajax请求中,您可以设置下一个记录限制。并且可以使用-> skip(5)

跳过前五个

答案 2 :(得分:0)

要从结果中跳过行数,可以在'Eloquent Query Builder'上使用skip()函数和take()函数。然后调用get()以获得结果。

skip(n) // n = number of rows to be skipped

take(m) // m = number of rows need to be take after the skip

在这种情况下,'m =所有行数-n'

可能的解决方案

return  CategoryActivity::sortByDesc("priority")->skip(5)->take(
    CategoryActivity::sortByDesc("priority")->count() - 5
)->get();