如何在 laravel&Vue 中对数据进行分页?

How can I paginate data in laravel&Vue?

我正在使用 laravel 和 vuejs 制作网站。 我使用复杂的 Eloquent 查询从数据库中获取数据,如下所示。

$query->with([
        'deviceAssignment.deviceSetting.sim',
        'deviceAssignment.deviceSetting.device.deviceType',
        'deviceSignal',
        'deviceAssignment.deviceSetting.deviceGroup',
        'deviceAssignment.deviceSetting.company',
        'deviceAssignment.deviceSetting.phones'])
        ->orderBy('created_at', 'desc')
        ->get();

我同时用了好几个表,那么这个数据量有点大,所以我想对这个数据进行分页。 我像这样将分页器放在 vue 组件的底部。

.......

<pager :items="histories" v-on:paginate="changePage" class="pager bottom_10 top_20 position_r"></pager>

而changePage函数如下;

methods: {
        changePage: function(page){
            location.href = "/history/setting?page=" + page;
        },

在这种情况下,简单的,我把第一部分的get()函数改成paginate()来实现分页。 我说得对吗?

对于分页,使用 paginate(10) 函数而不是 get() 函数。

$query->with([
        'deviceAssignment.deviceSetting.sim',
        'deviceAssignment.deviceSetting.device.deviceType',
        'deviceSignal',
        'deviceAssignment.deviceSetting.deviceGroup',
        'deviceAssignment.deviceSetting.company',
        'deviceAssignment.deviceSetting.phones'])
        ->orderBy('created_at', 'desc')
        ->paginate(10);

https://laravel.com/docs/8.x/pagination#paginating-query-builder-results https://laravel.com/docs/8.x/pagination#paginating-eloquent-results