fastadmin中selectpage条件wherein添加

public function selectpage()
{
    //设置过滤方法
    $this->request->filter(['strip_tags', 'htmlspecialchars']);

    //搜索关键词,客户端输入以空格分开,这里接收为数组
    $word = (array)$this->request->request("q_word/a");
    //当前页
    $page = $this->request->request("pageNumber");
    //分页大小
    $pagesize = $this->request->request("pageSize");
    //搜索条件
    $andor = $this->request->request("andOr", "and", "strtoupper");
    //排序方式
    $orderby = (array)$this->request->request("orderBy/a");
    //显示的字段
    $field = $this->request->request("showField");
    $extraShowField = $this->request->request("extraShowField/s"); //需要额外显示的字段

    //主键
    $primarykey = $this->request->request("keyField");
    //主键值
    $primaryvalue = $this->request->request("keyValue");

    //搜索字段
    $searchfield = (array)$this->request->request("searchField/a");

    //在返回数据时,额外返回的字段值
    $returnField = $this->request->request("returnField/s");
    //自定义搜索条件
    $custom = (array)$this->request->request("custom/a");

    //自定义搜索条件 多数值 
    $wherein = (array)$this->request->request("wherein/a");
    $order = [];
    foreach ($orderby as $k => $v) {
        $order[$v[0]] = $v[1];
    }
    $field = $field ? $field : 'name';

    //如果有primaryvalue,说明当前是初始化传值
    if ($primaryvalue !== null) {
        $where = [$primarykey => ['in', $primaryvalue]];
    } else {
        $where = function ($query) use ($word, $andor, $field, $searchfield, $custom, $wherein) {
            $logic = $andor == 'AND' ? '&' : '|';
            $searchfield = is_array($searchfield) ? implode($logic, $searchfield) : $searchfield;
            foreach ($word as $k => $v) {
                $query->where(str_replace(',', $logic, $searchfield), "like", "%{$v}%");
            }
            if ($custom && is_array($custom)) {
                foreach ($custom as $k => $v) {
                    $query->where($k, '=', $v);
                }
            }
            if ($wherein && is_array($wherein)) {
                foreach ($wherein as $k => $v) {
                    $query->where($k, 'in', $v);
                }
            }

        };
    }
    $adminIds = $this->getDataLimitAdminIds();
    if (is_array($adminIds)) {
        $this->model->where($this->dataLimitField, 'in', $adminIds);
    }
    $list = [];
    $total = $this->model->where($where)->count();
    if ($total > 0) {
        if (is_array($adminIds)) {
            $this->model->where($this->dataLimitField, 'in', $adminIds);
        }
        $qFields = $primarykey . "," . $field;
        if ($returnField) {
            $returnField = explode(",", $returnField);
        } else {
            $returnField = [];
        }

        if ($extraShowField) {
            $extraShowField = explode(',', $extraShowField);
        } else {
            $extraShowField = [];
        }

        $f = array_unique(array_merge($extraShowField, $returnField));
        $f && $qFields .= ',' . implode(',', $f);

        $datalist = $this->model->where($where)
            ->order($order)
            ->page($page, $pagesize)
            ->field($qFields)
            ->select();

        foreach ($datalist as $index => $item) {
            unset($item['password'], $item['salt']);
            $fieldValue = isset($item[$field]) ? $item[$field] : '';
            $row = [
                $primarykey => isset($item[$primarykey]) ? $item[$primarykey] : '',

            ];
            if ($extraShowField) {
                $fieldValue .= '(';
                foreach ($extraShowField as $f) {
                    $row[$f] = @(string)$item[$f];
                    $fieldValue .= $row[$f] . '--';
                }
                $fieldValue = trim($fieldValue, '-') . ')';
            }
            if($returnField){
                foreach ($returnField as $f) {
                    $row[$f] = @(string)$item[$f];
                }
            }

            $row[$field]=$fieldValue;
            $list[] = $row;
        }
    }
    //这里一定要返回有list这个字段,total是可选的,如果total<=list的数量,则会隐藏分页按钮
    return json(['list' => $list, 'total' => $total]);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: b'fastadmin selectpage' 指的是 FastAdmin 框架的一个功能,用于创建管理后台页面的选择器。该选择器可以让用户快速选择所需的内容,并显示相关的信息和操作选项。要使用该功能,请打开 FastAdmin 后台,进入相关页面并按照指示操作即可。 ### 回答2: FastAdmin是一个基于ThinkPHP5和Bootstrap4的后台管理系统框架,它具有可扩展性和易用性。SelectPageFastAdmin的一个插件,它提供了方便的下拉列表搜索功能。在FastAdmin使用SelectPage可以让用户更快速地找到所需数据。 使用SelectPage插件的第一步是在FastAdmin后台菜单管理添加一个搜索页面。在搜索页面,可以定义搜索条件搜索结果的展示方式。这里需要注意的是,搜索页面必须有一个关联到数据表的模型。 在搜索页面的模板,可以添加SelectPage搜索框和相关代码。当用户在搜索输入关键字时,SelectPage将根据定义的搜索条件对数据表进行筛选,并在页面展示搜索结果。此外,SelectPage还提供了可编辑的下拉列表,可以通过后台管理来配置下拉列表的选项。 使用SelectPage可以让用户方便地在数据表查找所需要的数据。同时,由于FastAdmin具有可扩展性,开发者也可以根据自己的需求对SelectPage进行自定义和扩展。 ### 回答3: FastAdmin是一个强大的后台开发框架,采用了前后端分离的设计思路,提供了一系列丰富的功能组件和插件,方便开发者快速构建高效稳定的后台管理系统。其selectpageFastAdmin框架非常实用的一个组件之一,可以让用户在表单快速选择相关数据,提高了数据操作的效率。 selectpage的主要特点包括: 1.支持数据异步加载,可以在输入框输入数据时,实时向后台请求并返回匹配的数据,极大地方便了用户的操作。 2.支持多选和单选模式,可以根据需要选择是否允许用户同时选择多个数据。 3.支持自定义显示字段,可以根据业务需求自由选择需要展示的字段内容。 4.支持分页查询,当数据量过大时,可以通过分页的方式快速定位到需要选择的数据,提高了用户的操作效率。 5.支持数据缓存,可以将查询到的数据缓存到本地,减少服务器端的查询压力。 在实际应用selectpage可以被广泛运用于需要选择关联数据的场景,例如选择所属部门、选择用户、选择商品等等。对于开发者来说,只需要简单地配置相应的参数即可,框架会自动完成数据加载、显示、缓存等工作,从而快速完成业务开发。总之,FastAdminselectpage组件极大地提高了后台管理系统的数据操作效率和用户体验,为开发人员带来了极大的便利。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值