From 870e81ab9d84ad0b81564adcd6114d07402d0299 Mon Sep 17 00:00:00 2001 From: JaguarJack Date: Sat, 26 Dec 2020 22:26:36 +0800 Subject: [PATCH 1/4] =?UTF-8?q?add:=E6=96=B0=E5=A2=9E=E5=BF=AB=E9=80=9F?= =?UTF-8?q?=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extend/catcher/CatchQuery.php | 73 +++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/extend/catcher/CatchQuery.php b/extend/catcher/CatchQuery.php index 1e2d3a7..8265b47 100644 --- a/extend/catcher/CatchQuery.php +++ b/extend/catcher/CatchQuery.php @@ -138,6 +138,57 @@ class CatchQuery extends Query return $this; } + /** + * 快速搜索 + * + * @param array $params + * @return Query + */ + public function quickSearch($params = []): Query + { + $requestParams = \request()->param(); + + if (empty($params) && empty($requestParams)) { + return $this; + } + + foreach ($requestParams as $field => $value) { + if (isset($params[$field])) { + // ['>', value] || value + if (is_array($params[$field])) { + $this->where($field, $params[$field][0], $params[$field][1]); + } else { + $this->where($field, $value); + } + } else { + // 区间范围 start_数据库字段 & end_数据库字段 + $startPos = strpos($field, 'start_'); + if ($startPos === 0) { + $this->where(str_replace('start_','', $field), '>=', strtotime($value)); + } + $endPos = strpos($field, 'end_'); + if ($endPos === 0) { + $this->where(str_replace('end_', '', $field), '>=', strtotime($value)); + } + // 模糊搜索 + if (Str::contains($field, 'like')) { + [$operate, $field] = explode('_', $field); + if ($operate === 'like') { + $this->whereLike($field, $value); + } else if ($operate === '%like') { + $this->whereLeftLike($field, $value); + } else { + $this->whereRightLike($field, $value); + } + } + // = 值搜索 + $this->where($field, $value); + } + } + + return $this; + } + /** * * @time 2020年01月13日 @@ -178,6 +229,28 @@ class CatchQuery extends Query return parent::whereLike($field, $condition, $logic); } + /** + * @param string $field + * @param $condition + * @param string $logic + * @return Query + */ + public function whereLeftLike(string $field, $condition, string $logic = 'AND'): Query + { + return $this->where($field, $condition, $logic, 'left'); + } + + /** + * @param string $field + * @param $condition + * @param string $logic + * @return Query + */ + public function whereRightLike(string $field, $condition, string $logic = 'AND'): Query + { + return $this->where($field, $condition, $logic, 'right'); + } + /** * 额外的字段 * From 901c7f6cd71ebb276b9d812e342de930f7848b25 Mon Sep 17 00:00:00 2001 From: JaguarJack Date: Sat, 26 Dec 2020 22:27:06 +0800 Subject: [PATCH 2/4] =?UTF-8?q?update:=E6=9B=B4=E6=96=B0=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- catch/monitor/model/search/CrontabSearch.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/catch/monitor/model/search/CrontabSearch.php b/catch/monitor/model/search/CrontabSearch.php index f24b20c..90c7c64 100644 --- a/catch/monitor/model/search/CrontabSearch.php +++ b/catch/monitor/model/search/CrontabSearch.php @@ -19,6 +19,6 @@ trait CrontabSearch public function searchStatusAttr($query, $value, $data) { - return $query->whereLike('status', $value); + return $query->where('status', $value); } } From b44c8838c48957c5e7bd2271face8a11bb10f951 Mon Sep 17 00:00:00 2001 From: JaguarJack Date: Sun, 27 Dec 2020 12:33:30 +0800 Subject: [PATCH 3/4] =?UTF-8?q?add:=E6=96=B0=E5=A2=9E=E9=9A=90=E8=97=8F?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extend/catcher/base/CatchModel.php | 5 +- extend/catcher/traits/db/RewriteTrait.php | 56 +++++++++++++++++++++++ 2 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 extend/catcher/traits/db/RewriteTrait.php diff --git a/extend/catcher/base/CatchModel.php b/extend/catcher/base/CatchModel.php index 52adb78..c47b7e4 100644 --- a/extend/catcher/base/CatchModel.php +++ b/extend/catcher/base/CatchModel.php @@ -5,6 +5,7 @@ namespace catcher\base; use catcher\CatchQuery; use catcher\traits\db\BaseOptionsTrait; +use catcher\traits\db\RewriteTrait; use catcher\traits\db\TransTrait; use think\model\concern\SoftDelete; use catcher\traits\db\ScopeTrait; @@ -17,7 +18,7 @@ use catcher\traits\db\ScopeTrait; */ abstract class CatchModel extends \think\Model { - use SoftDelete, TransTrait, BaseOptionsTrait, ScopeTrait; + use SoftDelete, TransTrait, BaseOptionsTrait, ScopeTrait, RewriteTrait; protected $createTime = 'created_at'; @@ -29,8 +30,8 @@ abstract class CatchModel extends \think\Model protected $autoWriteTimestamp = true; + // 分页 Limit public const LIMIT = 10; - // 开启 public const ENABLE = 1; // 禁用 diff --git a/extend/catcher/traits/db/RewriteTrait.php b/extend/catcher/traits/db/RewriteTrait.php new file mode 100644 index 0000000..8dfc628 --- /dev/null +++ b/extend/catcher/traits/db/RewriteTrait.php @@ -0,0 +1,56 @@ +hidden = array_merge($this->hidden, $this->defaultHiddenFields()); + } + + /** + * hidden model fields + * + * @return array + */ + protected function defaultHiddenFields(): array + { + return [$this->deleteTime]; + } + + /** + * 重写 hidden 方法,支持合并 hidden 属性 + * + * @param array $hidden + * @return $this + */ + public function hidden(array $hidden = []) + { + /** + * 合并属性 + */ + if (!count($this->hidden)) { + $this->hidden = array_merge($this->hidden, $hidden); + + return $this; + } + + $this->hidden = $hidden; + + return $this; + } +} \ No newline at end of file From 8cace712ae91b05d17e5af098b46bc0ff385909e Mon Sep 17 00:00:00 2001 From: JaguarJack Date: Sun, 27 Dec 2020 13:20:44 +0800 Subject: [PATCH 4/4] update readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index dc9b16d..f8a8713 100644 --- a/README.md +++ b/README.md @@ -139,14 +139,14 @@ composer create-project jaguarjack/catchadmin:dev-master - [Tp6 中间件分析](https://www.kancloud.cn/akasishikelu/thinkphp6/1136616) - [Tp6 请求流程](https://www.kancloud.cn/akasishikelu/thinkphp6/1136608) -### Donate + +--> ### Talking - [论坛讨论](http://bbs.catchadmin.com) - 可以提 `ISSUE`,请按照 `issue` 模板提问 -- 加入 Q 群 `302266230` 暗号 `catchadmin`。 +- 加入 Q 群 `302266230` 前请先 star 项目支持一下, 备注填写用户名 + 平台。例如: JaguarJack Github ### Thanks > 排名部分先后