如何在 Laravel for mobile API 中使用 DataTables 的开始和限制

问题描述 投票:0回答:1
public function listRemarks(ListRequest $request)
    {
        $listRemarks = $this->remarkservice->listRemarks($request);
        $totalRecords = $listRemarks->count();
        $limit = $request->length ?? 10;
        $start = $request->start ?? 0;
        $listRemarks->offset($start)->limit($limit);
        $filterRecords = $listRemarks->count();
        return DataTables::of($listRemarks)
        ->setTotalRecords($totalRecords)
        ->setFilteredRecords($filterRecords)
        ->toJson();
    }

我想对从

$listRemarks
返回的记录进行分页,并且需要设置自定义开始和长度,例如,如果我将
$start
设置为 2,将
$limit
设置为 10,那么它必须返回从 id=3 到 id=12 的记录那个页面。另外,当我将 $start 更改为 0 以外时,
recordsFiltered
没有给出正确的输出。输入 start 和 limit 产生的数据是正确的,但
recordsFilter
没有给出正确的计数。如果我使用
paginate()
,效果很好。

laravel mobile datatables pagination
1个回答
0
投票

也许你可以尝试跳过并采取

public function listRemarks(ListRequest $request)
{
    $query = $this->remarkservice->listRemarks($request);
    $totalRecords = $query->count();
    $limit = $request->input('length') ?? 10;
    $start = $request->input('start') ?? 0;

    $listRemarks = $query->skip($start)->take($limit)->get();
    $filterRecords = $query->count();

    return DataTables::of($listRemarks)
        ->setTotalRecords($totalRecords)
        ->setFilteredRecords($filterRecords)
        ->toJson();
}
© www.soinside.com 2019 - 2024. All rights reserved.