laravel-admin 后台 中间表查询 过滤条数 方法

问题:laravel-admin后台查询需求是需要查询关联表中大于n条的记录

正解分享

1、定义需要查询大于n的查询字段,注意这里的字段是任意定义的,不是数据库model中的字段。

$filter->where(function ($query)use($grid) {
}, '分享数大于', 'share_big');

2、取share_big字段的值

$share_big=\Request::has('share_big')?\Request::get('share_big'):0;

3、查询正解,看到有人问这个问题,直接上代码,注意红色字体,希望对你有帮助

 

protected function grid()
    {
        $grid = new Grid(new User);
        //查询轮子
        $share_big=\Request::has('share_big')?\Request::get('share_big'):0;
        $click_big=\Request::has('click_big')?\Request::get('click_big'):0;

        $grid->column('id', __('Id'));
        $grid->column('name', __('Name'));
//        $grid->column('nickname', __('Nickname'));
        $grid->column('share_user', '分享数')->display(function ($share_user) {
            $count = count($share_user);
            return "{$count}";
        });

        $grid->column('visit_user', '点击数')->display(function ($visit_user) {
            $count = count($visit_user);
            return "{$count}";
        });

        $grid->filter(function($filter) use($grid){
            // 去掉默认的id过滤器
            $filter->disableIdFilter();

            // 在这里添加字段过滤器
            $filter->like('name', '用户名');
            $filter->equal('type','类型')->radio([
                ''   => 'All',
                0    => '普通用户',
                1    => '主播',
            ]);
            $filter->where(function ($query)use($grid) {
            }, '分享数大于', 'share_big');

            $filter->where(function ($query)use($grid) {
            }, '点击数大于', 'click_big');
        });
        $grid->disableCreateButton();
        $grid->actions(function ($actions) {

            // 去掉删除
            $actions->disableDelete();

            // 去掉编辑
            $actions->disableEdit();

            // 去掉查看
            $actions->disableView();
        });

        if($share_big){
           $grid->model()->has('share_user', '>=', $share_big);
        }

        if($click_big){
            $grid->model()->has('visit_user', '>=', $click_big);
        }

        return $grid;
    }

你可能感兴趣的:(PHP,laravel)