为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
吃鸡游戏 2022-07-16 09:40:02
这是我的代码:$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);。我怎样才能在不干扰我的代码的情况下以“总计”给出这个值?谢谢 !
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

请试试这个


 $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;


查看完整回答
反对 回复 2022-07-16
?
墨色风雨

TA贡献1853条经验 获得超6个赞

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


查看完整回答
反对 回复 2022-07-16
  • 2 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信