From f45b9315a973a6a5963e023764f5f64285af80f9 Mon Sep 17 00:00:00 2001 From: JaguarJack Date: Mon, 1 Mar 2021 21:02:01 +0800 Subject: [PATCH] =?UTF-8?q?update:=E6=9B=B4=E6=96=B0aliasField=E6=96=B9?= =?UTF-8?q?=E6=B3=95=EF=BC=8C=E6=94=AF=E6=8C=81=E6=95=B0=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extend/catcher/traits/db/BaseOptionsTrait.php | 44 ++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/extend/catcher/traits/db/BaseOptionsTrait.php b/extend/catcher/traits/db/BaseOptionsTrait.php index c22d628..23d6889 100644 --- a/extend/catcher/traits/db/BaseOptionsTrait.php +++ b/extend/catcher/traits/db/BaseOptionsTrait.php @@ -40,7 +40,7 @@ trait BaseOptionsTrait */ public function storeBy(array $data) { - if ($this->allowField($this->field)->save($data)) { + if ($this->allowField($this->field)->save($this->filterData($data))) { return $this->{$this->getPk()}; } @@ -70,7 +70,7 @@ trait BaseOptionsTrait */ public function updateBy($id, $data, $field = ''): bool { - if (static::update($data, [$field ? : $this->getPk() => $id], $this->field)) { + if (static::update($this->filterData($data), [$field ? : $this->getPk() => $id], $this->field)) { return true; } @@ -162,11 +162,23 @@ trait BaseOptionsTrait * * @time 2020年01月13日 * @param $field - * @return string + * @return array|string */ - public function aliasField($field): string + public function aliasField($field) { - return sprintf('%s.%s', $this->getTable(), $field); + if (is_string($field)) { + return sprintf('%s.%s', $this->getTable(), $field); + } + + if (is_array($field)) { + foreach ($field as &$value) { + $value = sprintf('%s.%s', $this->getTable(), $field); + } + + return $field; + } + + return $field; } /** @@ -187,4 +199,26 @@ trait BaseOptionsTrait return $model->save(); } + + /** + * 过滤数据 + * + * @time 2021年02月28日 + * @param $data + * @return mixed + */ + protected function filterData($data) + { + foreach ($data as $field => $value) { + if (is_null($value)) { + unset($data[$field]); + } + + if ($field == $this->getPk()) { + unset($data[$field]); + } + } + + return $data; + } }