mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-01 20:52:48 +08:00
改进Queery类 增加whereXor方法 去除 whereExist whereOrExist whereNotExist whereOrNotExist方法
This commit is contained in:
@@ -766,7 +766,7 @@ class Query
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定查询条件
|
||||
* 指定AND查询条件
|
||||
* @access public
|
||||
* @param mixed $field 查询字段
|
||||
* @param mixed $op 查询表达式
|
||||
@@ -782,7 +782,7 @@ class Query
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定查询条件
|
||||
* 指定OR查询条件
|
||||
* @access public
|
||||
* @param mixed $field 查询字段
|
||||
* @param mixed $op 查询表达式
|
||||
@@ -797,23 +797,41 @@ class Query
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定XOR查询条件
|
||||
* @access public
|
||||
* @param mixed $field 查询字段
|
||||
* @param mixed $op 查询表达式
|
||||
* @param mixed $condition 查询条件
|
||||
* @return $this
|
||||
*/
|
||||
public function whereXor($field, $op = null, $condition = null)
|
||||
{
|
||||
$param = func_get_args();
|
||||
array_shift($param);
|
||||
$this->parseWhereExp('XOR', $field, $op, $condition, $param);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 分析查询表达式
|
||||
* @access public
|
||||
* @param string $logic 查询逻辑
|
||||
* @param string|array|\Closure $field 查询字段
|
||||
* @param mixed $op 查询表达式
|
||||
* @param mixed $condition 查询条件
|
||||
* @param string $operator and or
|
||||
* @param string $logic and or xor
|
||||
* @param array $param 查询参数
|
||||
* @return void
|
||||
*/
|
||||
protected function parseWhereExp($operator, $field, $op, $condition, $param = [])
|
||||
protected function parseWhereExp($logic, $field, $op, $condition, $param = [])
|
||||
{
|
||||
if ($field instanceof \Closure) {
|
||||
$this->options['where'][$operator][] = $field;
|
||||
$this->options['where'][$logic][] = is_string($op) ? [$op, $field] : $field;
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_string($field) && !empty($this->options['via'])) {
|
||||
if (is_string($field) && !empty($this->options['via']) && !strpos($field, '.')) {
|
||||
$field = $this->options['via'] . '.' . $field;
|
||||
}
|
||||
if (is_string($field) && preg_match('/[,=\>\<\'\"\(\s]/', $field)) {
|
||||
@@ -844,61 +862,13 @@ class Query
|
||||
$where[$field] = [$op, $condition];
|
||||
}
|
||||
if (!empty($where)) {
|
||||
if (!isset($this->options['where'][$operator])) {
|
||||
$this->options['where'][$operator] = [];
|
||||
if (!isset($this->options['where'][$logic])) {
|
||||
$this->options['where'][$logic] = [];
|
||||
}
|
||||
$this->options['where'][$operator] = array_merge($this->options['where'][$operator], $where);
|
||||
$this->options['where'][$logic] = array_merge($this->options['where'][$logic], $where);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定查询条件
|
||||
* @access public
|
||||
* @param mixed $where 条件表达式
|
||||
* @return $this
|
||||
*/
|
||||
public function whereExist($where)
|
||||
{
|
||||
$this->options['where']['AND'][] = ['EXISTS', $where];
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定查询条件
|
||||
* @access public
|
||||
* @param mixed $where 条件表达式
|
||||
* @return $this
|
||||
*/
|
||||
public function whereOrExist($where)
|
||||
{
|
||||
$this->options['where']['OR'][] = ['EXISTS', $where];
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定查询条件
|
||||
* @access public
|
||||
* @param mixed $where 条件表达式
|
||||
* @return $this
|
||||
*/
|
||||
public function whereNotExist($where)
|
||||
{
|
||||
$this->options['where']['AND'][] = ['NOT EXISTS', $where];
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定查询条件
|
||||
* @access public
|
||||
* @param mixed $where 条件表达式
|
||||
* @return $this
|
||||
*/
|
||||
public function whereOrNotExist($where)
|
||||
{
|
||||
$this->options['where']['OR'][] = ['NOT EXISTS', $where];
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定查询数量
|
||||
* @access public
|
||||
|
||||
Reference in New Issue
Block a user