erp/app/common/lists/ListsSearchTrait.php

106 lines
4.0 KiB
PHP

<?php
namespace app\common\lists;
trait ListsSearchTrait
{
protected $params;
protected $searchWhere = [];
/**
* @notes 搜索条件生成
* @param $search
* @return array
* @author 令狐冲
* @date 2021/7/7 19:36
*/
private function createWhere($search)
{
if (empty($search)) {
return [];
}
$where = [];
$class_key=$this->request->__get('class_key');
if($class_key!==null){
foreach($class_key as $key => $value){
array_push($search[$key], $value); // 添加class_key的搜索条件
}
}
$class_value=$this->request->__get('class_value'); // 获取class_value的值
if($class_value!==null){
$this->params=array_merge($this->params,$class_value);
}
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;
}
}