From 4a27d05a38bd865ccc119be109d6652150bb2759 Mon Sep 17 00:00:00 2001 From: thinkphp Date: Thu, 21 Jan 2016 11:47:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=9F=E9=99=A4=20Model=E7=B1=BB=E7=9A=84$fi?= =?UTF-8?q?elds['=5Fpk']=20=E7=BB=9F=E4=B8=80=E4=BD=BF=E7=94=A8=20$pk=20?= =?UTF-8?q?=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/Model.php | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/library/think/Model.php b/library/think/Model.php index c2cce2c2..98967ddd 100644 --- a/library/think/Model.php +++ b/library/think/Model.php @@ -1089,7 +1089,7 @@ class Model */ public function getPk() { - return isset($this->fields['_pk']) ? $this->fields['_pk'] : $this->pk; + return $this->pk; } /** @@ -1101,11 +1101,12 @@ class Model { if ($this->fields) { $fields = $this->fields; - unset($fields['_pk'], $fields['_type']); + unset($fields['_type']); return $fields; } else { $tableName = $this->getTableName(); - $fields = Cache::get(md5($tableName)); + $guid = md5($tableName); + $fields = Cache::get($guid); if (!$fields) { $fields = $this->db->getFields($tableName); $this->fields = array_keys($fields); @@ -1113,28 +1114,21 @@ class Model // 记录字段类型 $type[$key] = $val['type']; if (!empty($val['primary'])) { - // 增加复合主键支持 - if (!empty($this->fields['_pk'])) { - if (is_string($this->fields['_pk'])) { - $this->pk = [$this->fields['_pk']]; - $this->fields['_pk'] = $this->pk; - } - $this->pk[] = $key; - $this->fields['_pk'][] = $key; - } else { - $this->pk = $key; - $this->fields['_pk'] = $key; - } + $pk[] = $key; } } + if (isset($pk)) { + // 设置主键 + $this->pk = count($pk) > 1 ? $pk : $pk[0]; + } // 记录字段类型信息 $this->fields['_type'] = $type; - Cache::set(md5($tableName), $this->fields); + Cache::set($guid, $this->fields); $fields = $this->fields; } else { $this->fields = $fields; } - unset($fields['_pk'], $fields['_type']); + unset($fields['_type']); return $fields; } }