Fastadmin使用IN关联展示及搜索方法

列表展示多数据

在这里插入图片描述
展示类似结构且可搜索

第一步查看表结构存储

在这里插入图片描述

因存表是附表id 展示效果是附表的name值

第二步处理查询
在这里插入图片描述

public function index()
    {
        //当前是否为关联查询
        $this->relationSearch = true;
        //设置过滤方法
        $this->request->filter(['strip_tags', 'trim']);
        if ($this->request->isAjax()) {
            //如果发送的来源是Selectpage,则转发到Selectpage
            if ($this->request->request('keyField')) {
                return $this->selectpage();
            }
            $wheres = [];
            list($where, $sort, $order, $offset, $limit) = $this->buildparams();
            //自定义需要参数
            $filter = $this->request->get("filter", '');
            $filter = (array)json_decode($filter, true);
            if(isset($filter['book_id'])){
                $whereLike = " name like '%" .$filter['book_id'] . "%'";
                $book_id =  implode(',', db('book')->where($whereLike)->column('id'));
                $rex = explode(',', $book_id);
                foreach ($rex as $v){
                    $wheres[] = ['exp',Db::raw("FIND_IN_SET('$v', book_id)")];
                }
            }
            //end
            $list = $this->model
                    ->with(['address','member', 'arealist'])
                    ->where($where)
                    ->whereOr($wheres)
                    ->order($sort, $order)
                    ->paginate($limit);

            foreach ($list as $row) {
                $row->visible(['id','user_id', 'book_id','address_id','address_info','contact','phone','start_end_time','order_sn','create_time','status','delivery_time','return_book_time','return_book_finsh_time','des']);
                $row->visible(['address']);
				$row->visible(['member']);
            }
            $total = $list->total();
            $lists = $list->toArray();
            foreach ($lists['data'] as &$value) {
            //自定义需要参数
				$value['bookids'] = $value['book_id'];
                if($value['book_id']){
                    $bookId = explode(',', $value['book_id']);
                    $value['book_id'] = implode(',', db('book')
                        ->whereIn('id', $bookId)
                        ->column('name'));
                }
                //end
            }
            $result = array("total" => $total, "rows" => $lists['data']);

            return json($result);
        }
        return $this->view->fetch();
    }
处理数据之前是需要吧total和toArray取出 否则foreach需要读取item下的数据(使用的是分页查询)
  • book_id 存储及时book表的id使用in查询name返回即可

第二步处理搜索
修改application/common/controller/Backend.php大约270行左右
book_id是返回去的id且不能修改 只需要安装此方法查询即可
在这里插入图片描述

查询结果集

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值