Eloquent 分页后,通过 makeVisible 方法显示隐藏字段,分页内容消失了

先码再说

  public function index(Request $request)
    {
        //搜索服务
        $searcher = new SearchesService();
        //判断用户
        if ($this->is_login() && $this->isInstitutions()) {
            //获取query的builder
            $builder = $searcher->teachersSearcher($request, false, true);//第三个为true 返回Querybuilder

            //$builder->paginate(); 返回的类型为AbstractPaginator
            //$builder->paginate()->makeVisible(['img_list']); 返回的类型为Collection 分页的内容消失了

            return new BaseCollection($builder->paginate());
        }

        return $searcher->teachersSearcher($request,false);
    }

因为img_list是敏感内容,某些用户登录了之后,才能显示出来。所以在TeacherModel对该字段设置了隐藏。我是不是去修改makeVisible的方法,让其返回的类型也是 AbstractPaginator ?

Justin_change
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

楼主解决了没,我现在也遇到同样的问题了

3年前 评论
Justin_change (楼主) 3年前

试试这种方式?在使用的分页的情况下隐藏部分字段

$paginator = Supplier::query()
                     ->paginate($request->input('per_page', 10));
$paginator->data = $paginator->makeHidden(['id']);
return $paginator;
3年前 评论
苏亦坤 (作者) 2年前
Sparks 2年前
Sparks 2年前

有个方法可以实现,看图

file

makeVisiable()makeHidden()前先用get()方法获取,然后在之后paginate()即可

3年前 评论
苏亦坤 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!