| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <?php
- // +----------------------------------------------------------------------
- // | likeadmin快速开发前后端分离管理后台(PHP版)
- // +----------------------------------------------------------------------
- // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
- // | 开源版本可自由商用,可去除界面版权logo
- // | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
- // | github下载:https://github.com/likeshop-github/likeadmin
- // | 访问官网:https://www.likeadmin.cn
- // | likeadmin团队 版权所有 拥有最终解释权
- // +----------------------------------------------------------------------
- // | author: likeadminTeam
- // +----------------------------------------------------------------------
- namespace app\common\lists;
- trait ListsSearchTrait
- {
- protected array $params;
- protected $searchWhere = [];
- /**
- * @notes 搜索条件生成
- * @param $search
- * @return array
- * @author 令狐冲
- * @date 2021/7/7 19:36
- */
- private function createWhere($search)
- {
- if (empty($search)) {
- return [];
- }
- $where = [];
- foreach ($search as $whereType => $whereFields) {
- switch ($whereType) {
- case '=':
- case '<>':
- case '>':
- case '>=':
- case '<':
- case '<=':
- case 'in':
- foreach ($whereFields as $whereField) {
- $paramsName = substr_symbol_behind($whereField);
- if (!isset($this->params[$paramsName]) || $this->params[$paramsName] == '') {
- continue;
- }
- $where[] = [$whereField, $whereType, $this->params[$paramsName]];
- }
- break;
- case '%like%':
- foreach ($whereFields as $whereField) {
- $paramsName = substr_symbol_behind($whereField);
- if (!isset($this->params[$paramsName]) || empty($this->params[$paramsName])) {
- continue;
- }
- $where[] = [$whereField, 'like', '%' . $this->params[$paramsName] . '%'];
- }
- break;
- case '%like':
- foreach ($whereFields as $whereField) {
- $paramsName = substr_symbol_behind($whereField);
- if (!isset($this->params[$paramsName]) || empty($this->params[$paramsName])) {
- continue;
- }
- $where[] = [$whereField, 'like', '%' . $this->params[$paramsName]];
- }
- break;
- case 'like%':
- foreach ($whereFields as $whereField) {
- $paramsName = substr_symbol_behind($whereField);
- if (!isset($this->params[$paramsName]) || empty($this->params[$paramsName])) {
- continue;
- }
- $where[] = [$whereField, 'like', $this->params[$paramsName] . '%'];
- }
- break;
- case 'between_time':
- if (!is_numeric($this->startTime) || !is_numeric($this->endTime)) {
- break;
- }
- $where[] = [$whereFields, 'between', [$this->startTime, $this->endTime]];
- break;
- case 'between':
- if (empty($this->start) || empty($this->end)) {
- break;
- }
- $where[] = [$whereFields, 'between', [$this->start, $this->end]];
- break;
- case 'find_in_set': // find_in_set查询
- foreach ($whereFields as $whereField) {
- $paramsName = substr_symbol_behind($whereField);
- if (!isset($this->params[$paramsName]) || $this->params[$paramsName] == '') {
- continue;
- }
- $where[] = [$whereField, 'find in set', $this->params[$paramsName]];
- }
- break;
- }
- }
- return $where;
- }
- }
|