From 6356cacefd8ccc727e9ce22cd279d77c73ec8e67 Mon Sep 17 00:00:00 2001 From: thinkphp Date: Mon, 11 Dec 2017 21:53:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3Query=E7=B1=BB=E7=9A=84inc?= =?UTF-8?q?=E5=92=8Cdec=E6=96=B9=E6=B3=95=E7=9A=84=E5=85=B3=E9=94=AE?= =?UTF-8?q?=E8=AF=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/db/Builder.php | 14 ++++++++++++-- library/think/db/Query.php | 8 ++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/library/think/db/Builder.php b/library/think/db/Builder.php index 213cb090..d78193af 100644 --- a/library/think/db/Builder.php +++ b/library/think/db/Builder.php @@ -110,8 +110,18 @@ abstract class Builder } } elseif (is_null($val)) { $result[$item] = 'NULL'; - } elseif (isset($val[0]) && 'exp' == $val[0]) { - $result[$item] = $val[1]; + } elseif (is_array($val)) { + switch ($val[0]) { + case 'exp': + $result[$item] = $val[1]; + break; + case 'inc': + $result[$item] = $this->parseKey($val[1]) . '+' . $val[2]; + break; + case 'dec': + $result[$item] = $this->parseKey($val[1]) . '-' . $val[2]; + break; + } } elseif (is_scalar($val)) { // 过滤非标量数据 if (0 === strpos($val, ':') && $this->query->isBind(substr($val, 1))) { diff --git a/library/think/db/Query.php b/library/think/db/Query.php index 13b39a44..64a446a4 100644 --- a/library/think/db/Query.php +++ b/library/think/db/Query.php @@ -607,7 +607,7 @@ class Query return true; } } - return $this->setField($field, ['exp', $field . '+' . $step]); + return $this->setField($field, ['inc', $field, $step]); } /** @@ -636,7 +636,7 @@ class Query return true; } } - return $this->setField($field, ['exp', $field . '-' . $step]); + return $this->setField($field, ['dec', $field, $step]); } /** @@ -829,7 +829,7 @@ class Query { $fields = is_string($field) ? explode(',', $field) : $field; foreach ($fields as $field) { - $this->data($field, ['exp', $field . '+' . $step]); + $this->data($field, ['inc', $field, $step]); } return $this; } @@ -845,7 +845,7 @@ class Query { $fields = is_string($field) ? explode(',', $field) : $field; foreach ($fields as $field) { - $this->data($field, ['exp', $field . '-' . $step]); + $this->data($field, ['dec', $field, $step]); } return $this; }