diff --git a/library/think/Model.php b/library/think/Model.php index 4aa4c4e5..d2547daf 100644 --- a/library/think/Model.php +++ b/library/think/Model.php @@ -411,13 +411,27 @@ abstract class Model implements \JsonSerializable, \ArrayAccess return $result; } + /** + * 保存多个数据到当前数据对象 + * @access public + * @param array $data 数据 + * @return integer + */ + public function saveAll($dataSet) + { + foreach ($dataSet as $data) { + $result = $this->save($data); + } + return $result; + } + /** * 设置允许写入的字段 * @access public * @param bool $update * @return $this */ - public function field($field) + public function allowField($field) { $this->field = $field; return $this; diff --git a/library/think/model/Relation.php b/library/think/model/Relation.php index 62def09f..bd529ccd 100644 --- a/library/think/model/Relation.php +++ b/library/think/model/Relation.php @@ -73,6 +73,13 @@ class Relation case self::HAS_ONE: case self::BELONGS_TO: $result = $db->find(); + if (false === $result) { + $class = $this->model; + $result = new $class; + $foreignKey = $this->foreignKey; + $localKey = $this->localKey; + $result->$foreignKey = $this->parent->$localKey; + } break; case self::HAS_MANY: case self::BELONGS_TO_MANY: @@ -240,7 +247,7 @@ class Relation // 重新组装模型数据 foreach ($result->toArray() as $key => $val) { if (strpos($key, '__')) { - list($name, $attr) = explode('__', $key,2); + list($name, $attr) = explode('__', $key, 2); if ($name == $modelName) { $list[$name][$attr] = $val; unset($result->$key); @@ -300,7 +307,7 @@ class Relation $pivot = []; foreach ($set->toArray() as $key => $val) { if (strpos($key, '__')) { - list($name, $attr) = explode('__', $key,2); + list($name, $attr) = explode('__', $key, 2); if ('pivot' == $name) { $pivot[$attr] = $val; unset($set->$key);