「FastAdmin」fastadmin二次开发中如何自定义查询数据

fastadmin二次开发中如何自定义查询数据

问题背景:最近做一个网站的过程中遇到了一个需求:对于不同用户组的用户,显示的数据要根据权限来筛选。问题看起来不是很难,文档和社区中已经给了足够的提示,我想对于自己遇到的问题进行如下总结。

首先打开我想要操作的控制器 \admin\controller\Tapply.php

可以看到如下注释

/*** 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改*/

所以如果我们想重新定义查询条件的话,应该先把目录\admin\library\traits\Backend.php中的index方法复制过来

/*** 查看*/
public function index()
{//设置过滤方法$this->request->filter(['strip_tags']);if ($this->request->isAjax()) {//如果发送的来源是Selectpage,则转发到Selectpageif ($this->request->request('keyField')) {return $this->selectpage();}list($where, $sort, $order, $offset, $limit) = $this->buildparams();$total = $this->model->where($where)->order($sort, $order)->count();$list = $this->model->where($where)->order($sort, $order)->limit($offset, $limit)->select();$list = collection($list)->toArray();$result = array("total" => $total, "rows" => $list);return json($result);}return $this->view->fetch();
}

如果不去抠细节,我们可以看到$total$list分别是用ThinkPHP5中最基本的方法来获取数据集和它的总数,最后返回的是json数据,接下来的操作应该是把接口给前端再进行显示就可以了。

那么如果想筛选直接使用$where["column_name"] = "column_value" 就可以了嘛?

答案是不太行

我们来看一看list($where, $sort, $order, $offset, $limit) = $this->buildparams();这一句代码

找到这个函数,函数有些长,我这里只复制一部分与where有关的

/*** 生成查询所需要的条件,排序方式* @param mixed $searchfields 快速查询的字段* @param boolean $relationSearch 是否关联查询* @return array*/
protected function buildparams($searchfields = null, $relationSearch = null)
{... $where = [];...$where[] = [$k,"LIKE","%".$v."%"];...//说出来不怕各位大佬笑话,这个闭包真的是小弟第一次见到,都怪自己读代码读得少$where = function ($query) use ($where) {foreach ($where as $k => $v) {if (is_array($v)) {call_user_func_array([$query, 'where'], $v);} else {$query->where($v);}}};return [$where, $sort, $order, $offset, $limit];
}

所以,最后的$where并不是一个数组,而是一个闭包Closure,小弟愚笨翻了日志才发现这个问题?

123

当然解决方法也很简单,我这里说一下两种我使用的方法

// 第一种:自定义一个where查询数组,然后在查询是多加一个where条件,不过如果遇到多表级联查询,需要注意相同的字段要指定表明,否则会引起冲突(歧义)
$mywhere = [];
/*根据权限产生不同的where条件*/
$con = "";
if($con){$mywhere["tapply.id"] = 1;
}
$total = $this->model->with(['profess','student','teacher'])->where($where)->where($mywhere)->order($sort, $order)->count();$list = $this->model->with(['profess','student','teacher'])->where($where)->where($mywhere)->order($sort, $order)->limit($offset, $limit)->select();-------------------------------------------------------------------------------------
//第二种:把传回来的where强制转型为array,然后就可以按原来的方法查询了
$where = (array)$where;
$where["tapply.id"]=1;//个人更偏向第一种方法,尽量不要对框架封装好的代码进行修改。

[结语]  个人水平有限,仍在努力学习。大家有方法可以一起交流?(fastadmin的使用总结小弟也会在项目一期完工后总结!)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/68033.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运营商大数据获客,帮你找到可靠的精准客户

运营商大数据具有全面性、多维性、客观性等特点,数据相对集中,信息价值高。要是在互联网上亿的数据库里查询客源无异于大海捞针。在运营商海量基础上利用大数据的技术,分析《建模》、机器学习等操作,构建用户独立的标签体系&#…

【HiFlow】定期发送腾讯云短信发送群

博主昵称:跳楼梯企鹅 博主主页面链接:博主主页传送门 博主专栏页面连接:专栏传送门--网路安全技术 创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教…

企业多云场景下的管理方案:多云统一账号管理(Cloud SSO)

本篇文章介绍云联壹云多云账号统一管理功能。本文分三部分,首先介绍为什么要设计多云统一账号管理这个功能。其次,介绍此功能的详细方案和工作原理,最后,介绍如何使用多云账号统一管理功能。 为什么需要Cloud SSO 多云账号统一管理…

BZMCTF:流量监控平台

http://www.bmzclub.cn/challenges#%E6%B5%81%E9%87%8F%E7%9B%91%E6%8E%A7%E5%B9%B3%E5%8F%B0通过枚举可知存在admin用户,当unameadmin时,发现提示密码错误,当uname!admin时提示用户名错误。 另外存在过滤SQL关键字符 简单fuzz一下过滤了哪…

【合宙4G Cat.1入门教程】--Cat.1 AT指令连接阿里云收发数据 上

使用AT指令,快速连接上云服务器进行数据收发,达到给设备联网的效果 1、阿里云创建设备 1.1 阿里云创建产品 登录阿里云,支付宝账号或淘宝账号即可 阿里云物联网平台地址:https://account.aliyun.com/login/login.htm?oauth_c…

【合宙4G Cat.1入门教程】--Cat.1 AT指令连接阿里云收发数据 下

通过使用AT指令,快速连接上云服务器进行数据收发,达到给设备联网的效果 1、连接阿里云 以下AT指令若有疑问可参考合宙的Luat 4G模块AT命令手册V4.1.6,这里对AT指令不做细致描述 根据【合宙4G Cat.1入门教程】–Cat.1 AT指令连接阿里云收发…

fastadmin腾讯云短信插件提示配置错误解决方法

装了腾讯云短信插件 总是提示配置错误 {"code": 0,"msg": "发送失败,请检查短信配置是否正确","time": "1666078465","data": null }这是由于该插件使用的模板跟我申请的验证码模板参数不一样导致的。…

【T+】T+登录软件提示“账号或者密码不正确,或用户不在云应用开通的企业中”

【问题现象】 手机号登录T提示:“账号或者密码不正确,或用户不在云应用开通的企业中” 【解决方法】 第一步:确认输入的手机号,密码正确,并且该手机号能正常登录畅捷通官网www.chanjet.com; 第二步:检查ea…

虹科分享 | 网络流量监控 | 使用 ntopng 收件人和端点进行灵活的警报处理

在之前,ntopng引擎对所有警报的配置是单一的:进入偏好页面并指定警报的发送地点。但这是不理想的,原因有很多:包括不可能在不同的渠道向不同的收件人发送警报,或有选择地决定何时发送警报。 出于这个原因,…

支持流量计费的云服务器,云服务器流量计费功能

目前西部数码弹性云服务器,已支持按流量计费模式,相关说明如下。 一、开通及选择 1、流量计费适用于平时带宽使用较低但会间歇出现网络访问高峰的场景,若无特殊需求,建议选择按带宽计费; 2、支持按流量计费的线路&…

fastadmin管理员页面实现手机验证码登录功能-腾讯云短信插件

配置信息 安装插件 配置腾讯云短信信息 代码实现 新建页面/application/admin/view/index/phone_login.html(我直接复制登录login.html魔改的) <form method"post" id"login-form" action"{:url(index/phone_login)}"><!--AdminLo…

WhatsApp私域流量营销,蜂巢SCRM助你触达20亿用户

说起WhatsApp&#xff0c;做海外的朋友并不陌生&#xff0c;WhatsApp在 26-35 岁的美国互联网用户中最受欢迎。在 26-35 岁之间的所有美国人中&#xff0c;有 27%使用 WhatsApp。 以下是按年龄组使用 WhatsApp 的美国互联网用户百分比的完整细分&#xff1a; 按最大受众排名的前…

腾讯云轻量应用服务器月流量包用完超额了怎么计费?

腾讯云轻量应用服务器套餐内月流量包是免费的&#xff0c;超出套餐流量为0.8元/GB&#xff0c;轻量服务器地域不同流量费也有所不同&#xff0c;腾讯云百科来详细说下腾讯云轻量应用服务器流量、超出套餐后流量收费以及流量计费说明&#xff1a; 轻量应用服务器流量 腾讯云轻…

如何外网登录管理云通信短信网关平台?——快解析映射方案

云通信&#xff08;Cloud Communications &#xff09;是基于云计算商业模式应用的通信平台服务&#xff0c;简单易用,满足企业一键群发场景,支持多种语言SDK和API 接入。各个通信平台软件都集中在云端&#xff0c;且互通兼容&#xff0c;用户只要登录云通信平台&#xff0c;不…

腾讯云服务器公网流量是如何计算的?出流量还是入流量?

腾讯云服务器公网流量费直接算出流量&#xff0c;云服务器入方向流量是免费的&#xff0c;例如使用公网从云服务器上下载文件到本地产生的流量是收费的&#xff0c;从本地上传文件到云服务器上产生的流量是免费的。腾讯云服务器公网带宽可以按带宽计费&#xff0c;也可以按使用…

AI 工具合辑盘点(四)持续更新

AI 视频生成和编辑工具 当今&#xff0c;视频已经成为最受欢迎的媒介之一。我们喜欢观看视频&#xff0c;但是制作高质量的视频需要耗费大量时间和精力。 无论你是内容创作者、专业视频编辑师&#xff0c;还是完全的新手&#xff0c;按照传统方式制作视频需要掌握各种知识、技…

聚观早报 | 中国大语言模型和GPT-4差距在两三年;美团注册新专利

今日要闻&#xff1a;中国大语言模型和GPT-4差距在两三年&#xff1b;摩尔定律提出者Gordon Moore离世&#xff1b;美团注册外卖配送员头盔新专利&#xff1b;比亚迪汽车宣布联合抵制网络水军&#xff1b;OpenAI就ChatGPT漏洞道歉 中国大语言模型和GPT-4差距在两三年 3 月 25 …

一文盘点令人惊艳AI神器(附项目代码)

‍‍2023可以称得上是脑洞大开的一年&#xff01;人工智能的风口由‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍OpenAI的ChatGPT率先引爆。 今天&#xff0c;我们给大家推荐10款惊艳的AI工具&#xff0c;欢迎补充&#xff01; 一、AI围棋机器人&#xff1a;AlphaGo A…

一文盘点最近特别火的 10 款惊艳的 AI 工具(附项目代码)

‍‍2023可以称得上是脑洞大开的一年&#xff01;人工智能的风口由‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍OpenAI的ChatGPT率先引爆。 今天&#xff0c;我们给大家推荐10款惊艳的AI工具&#xff0c;欢迎补充&#xff01; 文章目录 一、AI围棋机器人&#xff1a…

chatgpt赋能python:Python好玩的包——ExploringtheFunSideofProgramming

Python好玩的包——Exploring the Fun Side of Programming Python是一门富有表达力和功能的编程语言&#xff0c;有着一个庞大而活跃的社区。这个社区中&#xff0c;你可以找到许多好玩和实用的包。这些包可以让你更加轻松愉快地编程&#xff0c;同时也可以帮助你完成许多任务…