内核更新

This commit is contained in:
2016-12-28 10:41:09 +08:00
parent c89254e12a
commit ffab826db0
65 changed files with 1194 additions and 610 deletions

View File

@@ -12,6 +12,7 @@
namespace think\model;
use think\Db;
use think\db\Query;
use think\Model;
class Merge extends Model
@@ -168,12 +169,13 @@ class Merge extends Model
$this->autoCompleteData($this->auto);
// 自动写入更新时间
if ($this->autoWriteTimestamp && $this->updateTime) {
if ($this->autoWriteTimestamp && $this->updateTime && !isset($this->data[$this->updateTime])) {
$this->setAttr($this->updateTime, null);
}
$db = $this->db();
$db->startTrans();
$pk = $this->getPk();
try {
if ($this->isUpdate) {
// 自动写入
@@ -187,19 +189,15 @@ class Merge extends Model
$where = $this->updateWhere;
}
if (!empty($where)) {
$pk = $this->getPk();
if (isset($this->mapFields[$pk])) {
$pk = $this->mapFields[$pk];
}
if (isset($where[$pk])) {
unset($where[$pk]);
}
}
// 处理模型数据
$data = $this->parseData($this->name, $this->data);
if (is_string($pk) && isset($data[$pk])) {
if (!isset($where[$pk])) {
unset($where);
$where[$pk] = $data[$pk];
}
unset($data[$pk]);
}
// 写入主表数据
$result = $db->strict(false)->where($where)->update($data);
@@ -209,7 +207,7 @@ class Merge extends Model
$table = is_int($key) ? $db->getTable($model) : $model;
// 处理关联模型数据
$data = $this->parseData($name, $this->data);
$query = clone $db;
$query = new Query;
if ($query->table($table)->strict(false)->where($this->fk, $this->data[$this->getPk()])->update($data)) {
$result = 1;
}
@@ -223,7 +221,7 @@ class Merge extends Model
$this->autoCompleteData($this->insert);
// 自动写入创建时间
if ($this->autoWriteTimestamp && $this->createTime) {
if ($this->autoWriteTimestamp && $this->createTime && !isset($this->data[$this->createTime])) {
$this->setAttr($this->createTime, null);
}
@@ -238,7 +236,6 @@ class Merge extends Model
if ($result) {
$insertId = $db->getLastInsID($sequence);
// 写入外键数据
$pk = $this->getPk();
if ($insertId) {
if (is_string($pk)) {
$this->data[$pk] = $insertId;
@@ -259,7 +256,7 @@ class Merge extends Model
$table = is_int($key) ? $db->getTable($model) : $model;
// 处理关联模型数据
$data = $this->parseData($name, $source, true);
$query = clone $db;
$query = new Query;
$query->table($table)->strict(false)->insert($data);
}
}
@@ -300,7 +297,7 @@ class Merge extends Model
// 删除关联数据
foreach ($this->relationModel as $key => $model) {
$table = is_int($key) ? $db->getTable($model) : $model;
$query = clone $db;
$query = new Query;
$query->table($table)->where($this->fk, $pk)->delete();
}
}