Laravel Eloquent Pagination,如何在使用过滤器分页之前计数?

这是我的代码:


$prestations = Prestation::with('service','facility','conciergeries.network')

            ->whereHas('service', function ($query) use ($searchService) {

                $query->select('id','name')->where('name', 'regexp', "/$searchService/i");

            })  

            ->whereHas('facility', function ($query) use ($searchPartenaire) {

                $query->select('id','name')->where('name', 'regexp', "/$searchPartenaire/i");

            })

            ->whereHas('conciergeries.network', function ($query) use ($searchFiliale) {

                $query->select('id','name')->where('name', 'regexp', "/$searchFiliale/i");

            })

                ->where('name', 'regexp', "/$search/i")

                ->orderBy($orderBy, $orderDirection)

                ->simplePaginate(50);


        $res = [

            'results' => $prestations,

            'total' => Prestation::all()->count(),

        ];


        return $res;

嗨,实际上我在“总计”中获得了所有“Prestation”项目,但在我的所有条件之后,我需要真正的总计simplePaginate(50);。我怎样才能在不干扰我的代码的情况下以“总计”给出这个值?谢谢 !


吃鸡游戏
浏览 104回答 2
2回答

白衣染霜花

请试试这个 $prestations = Prestation::with('service','facility','conciergeries.network')                ->whereHas('service', function ($query) use ($searchService) {                    $query->select('id','name')->where('name', 'regexp', "/$searchService/i");                })                  ->whereHas('facility', function ($query) use ($searchPartenaire) {                    $query->select('id','name')->where('name', 'regexp', "/$searchPartenaire/i");                })                ->whereHas('conciergeries.network', function ($query) use ($searchFiliale) {                    $query->select('id','name')->where('name', 'regexp', "/$searchFiliale/i");                })                    ->where('name', 'regexp', "/$search/i")                    ->orderBy($orderBy, $orderDirection);            $res = [                'results' => $prestations->simplePaginate(50),                'total' => $prestations->count(),            ];            return $res;

墨色风雨

Eloquent 查询非常灵活,您可以在执行它们之前将它们存储为变量。这是您可以执行的操作的简化示例:// Start your query and store it as a variable$query = Prestation::where('name', 'regexp', "/$search/i");// Now count the total number of entries which will return$count = $query->count();// Finally, do your pagination$prestations = $query->simplePaginate(50);当然,您可以将所有其他约束添加到查询中,我刚刚删除了它们以简化答案。分享编辑跟随于 2020 年 1 月 3 日 1
打开App,查看更多内容
随时随地看视频慕课网APP