This commit is contained in:
2021-08-09 16:59:28 +08:00
parent a29e54630b
commit 2b96155ec7
+60 -51
View File
@@ -67,7 +67,7 @@ trait QueryTrait
* @param callable $callable * @param callable $callable
* @return $this * @return $this
*/ */
public function case(string $column, callable $callable): static public function when(string $column, callable $callable): static
{ {
$caseWhen = new When($column, $this); $caseWhen = new When($column, $this);
@@ -79,6 +79,17 @@ trait QueryTrait
} }
/**
* @param string $whereRaw
* @return QueryTrait
*/
public function whereRaw(string $whereRaw): static
{
$this->where[] = $whereRaw;
return $this;
}
/** /**
* @param string|array $condition * @param string|array $condition
* @param string|array|Closure $condition1 * @param string|array|Closure $condition1
@@ -87,7 +98,7 @@ trait QueryTrait
* @throws NotFindClassException * @throws NotFindClassException
* @throws ReflectionException * @throws ReflectionException
*/ */
public function if(string|array $condition, string|array|Closure $condition1, string|array|Closure $condition2): static public function whereIf(string|array $condition, string|array|Closure $condition1, string|array|Closure $condition2): static
{ {
if (!is_string($condition)) { if (!is_string($condition)) {
$condition = $this->makeClosureFunction($condition, true); $condition = $this->makeClosureFunction($condition, true);
@@ -147,7 +158,7 @@ trait QueryTrait
* @param string $value * @param string $value
* @return $this * @return $this
*/ */
public function locate(string $column, string $value): static public function whereLocate(string $column, string $value): static
{ {
$this->where[] = 'LOCATE(' . $column . ',\'' . addslashes($value) . '\') > 0'; $this->where[] = 'LOCATE(' . $column . ',\'' . addslashes($value) . '\') > 0';
return $this; return $this;
@@ -155,10 +166,10 @@ trait QueryTrait
/** /**
* @param $column * @param string $column
* @return $this * @return $this
*/ */
public function isNull($column): static public function whereNull(string $column): static
{ {
$this->where[] = $column . ' IS NULL'; $this->where[] = $column . ' IS NULL';
return $this; return $this;
@@ -166,41 +177,40 @@ trait QueryTrait
/** /**
* @param $column * @param string $column
* @return $this * @return $this
*/ */
public function isEmpty($column): static public function whereEmpty(string $column): static
{ {
$this->where[] = $column . ' = \'\''; $this->where[] = $column . ' = \'\'';
return $this; return $this;
} }
/** /**
* @param $column * @param string $column
* @return $this * @return $this
*/ */
public function isNotEmpty($column): static public function whereNotEmpty(string $column): static
{ {
$this->where[] = $column . ' <> \'\''; $this->where[] = $column . ' <> \'\'';
return $this; return $this;
} }
/** /**
* @param $column * @param string $column
* @return $this * @return $this
*/ */
public function isNotNull($column): static public function whereNotNull(string $column): static
{ {
$this->where[] = $column . ' IS NOT NULL'; $this->where[] = $column . ' IS NOT NULL';
return $this; return $this;
} }
/** /**
* @param $columns * @param array|Closure|string $columns
* @return $this * @return $this
* @throws Exception
*/ */
public function filter($columns): static public function filter(array|Closure|string $columns): static
{ {
if (!$columns) { if (!$columns) {
return $this; return $this;
@@ -374,21 +384,21 @@ trait QueryTrait
} }
/** /**
* @param $field * @param string $field
* *
* @return $this * @return $this
*/ */
public function sum($field): static public function sum(string $field): static
{ {
$this->select[] = 'SUM(' . $field . ') AS ' . $field; $this->select[] = 'SUM(' . $field . ') AS ' . $field;
return $this; return $this;
} }
/** /**
* @param $field * @param string $field
* @return $this * @return $this
*/ */
public function max($field): static public function max(string $field): static
{ {
$this->select[] = 'MAX(' . $field . ') AS ' . $field; $this->select[] = 'MAX(' . $field . ') AS ' . $field;
return $this; return $this;
@@ -410,7 +420,7 @@ trait QueryTrait
} }
/** /**
* @param $column * @param string|array $column
* @param string $sort * @param string $sort
* *
* @return $this * @return $this
@@ -420,7 +430,7 @@ trait QueryTrait
* 'descTime desc' * 'descTime desc'
* ] * ]
*/ */
public function orderBy($column, string $sort = 'DESC'): static public function orderBy(string|array $column, string $sort = 'DESC'): static
{ {
if (empty($column)) { if (empty($column)) {
return $this; return $this;
@@ -437,13 +447,13 @@ trait QueryTrait
} }
/** /**
* @param $column * @param string $column
* @param string $sort * @param string $sort
* *
* @return $this * @return $this
* *
*/ */
private function addOrder($column, string $sort = 'DESC'): static private function addOrder(string $column, string $sort = 'DESC'): static
{ {
$column = trim($column); $column = trim($column);
@@ -489,7 +499,7 @@ trait QueryTrait
* *
* @return QueryTrait * @return QueryTrait
*/ */
public function or(array $conditionArray = []): static public function whereOr(array $conditionArray = []): static
{ {
$this->where = ['or', $conditionArray]; $this->where = ['or', $conditionArray];
return $this; return $this;
@@ -502,7 +512,7 @@ trait QueryTrait
* @param string $opera * @param string $opera
* @return QueryTrait * @return QueryTrait
*/ */
public function and(string $columns, string|int|null|bool $value = NULL, string $opera = '='): static public function whereAnd(string $columns, string|int|null|bool $value = NULL, string $opera = '='): static
{ {
if (!is_numeric($value) && !is_bool($value)) { if (!is_numeric($value) && !is_bool($value)) {
$value = '\'' . $value . '\''; $value = '\'' . $value . '\'';
@@ -513,12 +523,12 @@ trait QueryTrait
/** /**
* @param $columns * @param string $columns
* @param string $value * @param string $value
* @return $this * @return $this
* @throws Exception * @throws Exception
*/ */
public function like($columns, string $value): static public function whereLike(string $columns, string $value): static
{ {
if (empty($columns) || empty($value)) { if (empty($columns) || empty($value)) {
return $this; return $this;
@@ -534,12 +544,12 @@ trait QueryTrait
} }
/** /**
* @param $columns * @param string $columns
* @param string $value * @param string $value
* @return $this * @return $this
* @throws Exception * @throws Exception
*/ */
public function lLike($columns, string $value): static public function whereLeftLike(string $columns, string $value): static
{ {
if (empty($columns) || empty($value)) { if (empty($columns) || empty($value)) {
return $this; return $this;
@@ -555,12 +565,12 @@ trait QueryTrait
} }
/** /**
* @param $columns * @param string $columns
* @param string $value * @param string $value
* @return $this * @return $this
* @throws Exception * @throws Exception
*/ */
public function rLike($columns, string $value): static public function whereRightLike(string $columns, string $value): static
{ {
if (empty($columns) || empty($value)) { if (empty($columns) || empty($value)) {
return $this; return $this;
@@ -577,12 +587,12 @@ trait QueryTrait
/** /**
* @param $columns * @param string $columns
* @param string $value * @param string $value
* @return $this * @return $this
* @throws Exception * @throws Exception
*/ */
public function notLike($columns, string $value): static public function whereNotLike(string $columns, string $value): static
{ {
if (empty($columns) || empty($value)) { if (empty($columns) || empty($value)) {
return $this; return $this;
@@ -604,7 +614,7 @@ trait QueryTrait
* @throws Exception * @throws Exception
* @see MathematicsCondition * @see MathematicsCondition
*/ */
public function eq(string $column, int $value): static public function whereEq(string $column, int $value): static
{ {
$this->where[] = ['EQ', $column, $value]; $this->where[] = ['EQ', $column, $value];
@@ -619,7 +629,7 @@ trait QueryTrait
* @throws Exception * @throws Exception
* @see MathematicsCondition * @see MathematicsCondition
*/ */
public function neq(string $column, int $value): static public function whereNeq(string $column, int $value): static
{ {
$this->where[] = ['NEQ', $column, $value]; $this->where[] = ['NEQ', $column, $value];
@@ -634,7 +644,7 @@ trait QueryTrait
* @throws Exception * @throws Exception
* @see MathematicsCondition * @see MathematicsCondition
*/ */
public function gt(string $column, int $value): static public function whereGt(string $column, int $value): static
{ {
$this->where[] = ['GT', $column, $value]; $this->where[] = ['GT', $column, $value];
@@ -648,7 +658,7 @@ trait QueryTrait
* @throws Exception * @throws Exception
* @see MathematicsCondition * @see MathematicsCondition
*/ */
public function egt(string $column, int $value): static public function whereEgt(string $column, int $value): static
{ {
$this->where[] = ['EGT', $column, $value]; $this->where[] = ['EGT', $column, $value];
@@ -663,7 +673,7 @@ trait QueryTrait
* @throws Exception * @throws Exception
* @see MathematicsCondition * @see MathematicsCondition
*/ */
public function lt(string $column, int $value): static public function whereLt(string $column, int $value): static
{ {
$this->where[] = ['LT', $column, $value]; $this->where[] = ['LT', $column, $value];
@@ -677,7 +687,7 @@ trait QueryTrait
* @throws Exception * @throws Exception
* @see MathematicsCondition * @see MathematicsCondition
*/ */
public function elt(string $column, int $value): static public function whereElt(string $column, int $value): static
{ {
$this->where[] = ['ELT', $column, $value]; $this->where[] = ['ELT', $column, $value];
@@ -685,12 +695,13 @@ trait QueryTrait
} }
/** /**
* @param $columns * @param string $columns
* @param $value * @param array|Closure $value
* @return $this * @return $this
* @throws Exception * @throws NotFindClassException
* @throws ReflectionException
*/ */
public function in($columns, $value): static public function whereIn(string $columns, array|Closure $value): static
{ {
if ($value instanceof Closure) { if ($value instanceof Closure) {
$value = $this->makeClosureFunction($value); $value = $this->makeClosureFunction($value);
@@ -731,12 +742,11 @@ trait QueryTrait
/** /**
* @param $columns * @param string $columns
* @param $value * @param array $value
* @return $this * @return $this
* @throws Exception
*/ */
public function notIn($columns, $value): static public function whereNotIn(string $columns, array $value): static
{ {
if (empty($value) || !is_array($value)) { if (empty($value) || !is_array($value)) {
$value = [-1]; $value = [-1];
@@ -751,7 +761,7 @@ trait QueryTrait
* @param int $end * @param int $end
* @return $this * @return $this
*/ */
public function between(string $column, int $start, int $end): static public function whereBetween(string $column, int $start, int $end): static
{ {
if (empty($column) || empty($start) || empty($end)) { if (empty($column) || empty($start) || empty($end)) {
return $this; return $this;
@@ -768,7 +778,7 @@ trait QueryTrait
* @param int $end * @param int $end
* @return $this * @return $this
*/ */
public function notBetween(string $column, int $start, int $end): static public function whereNotBetween(string $column, int $start, int $end): static
{ {
if (empty($column) || empty($start) || empty($end)) { if (empty($column) || empty($start) || empty($end)) {
return $this; return $this;
@@ -794,13 +804,12 @@ trait QueryTrait
} }
/** /**
* @param callable|array|string $conditions * @param callable|array $conditions
* @return $this * @return $this
* @throws NotFindClassException * @throws NotFindClassException
* @throws ReflectionException * @throws ReflectionException
* @throws Exception
*/ */
public function where(callable|array|string $conditions): static public function where(callable|array $conditions): static
{ {
if ($conditions instanceof Closure) { if ($conditions instanceof Closure) {
$conditions = $this->makeClosureFunction($conditions); $conditions = $this->makeClosureFunction($conditions);