diff --git a/library/think/Model.php b/library/think/Model.php index 8cd3259d..3b24b135 100644 --- a/library/think/Model.php +++ b/library/think/Model.php @@ -56,8 +56,6 @@ abstract class Model implements \JsonSerializable, \ArrayAccess protected $pk; // 数据表字段信息 留空则自动获取 protected $field = []; - // 关联属性 - protected $relationAttr = []; // 只读字段 protected $readonly = []; // 显示属性 @@ -349,20 +347,23 @@ abstract class Model implements \JsonSerializable, \ArrayAccess // 类型转换 $value = $this->writeTransform($value, $this->type[$name]); } - - if ($this->isRelationAttr($name)) { - $isRelationData = true; - } - } // 设置数据对象属性 - if (isset($isRelationData)) { - $this->relation[$name] = $value; - } else { - $this->data[$name] = $value; - } + $this->data[$name] = $value; + return $this; + } + /** + * 设置关联数据对象值 + * @access public + * @param string $name 属性名 + * @param mixed $value 属性值 + * @return $this + */ + public function setRelation($name, $value) + { + $this->relation[$name] = $value; return $this; } @@ -519,8 +520,8 @@ abstract class Model implements \JsonSerializable, \ArrayAccess $value = $this->formatDateTime($value, $this->dateFormat); } } elseif ($notFound) { - $relation = $this->isRelationAttr($name); - if ($relation) { + $relation = Loader::parseName($name, 1, false); + if (method_exists($this, $relation)) { $modelRelation = $this->$relation(); // 不存在该字段 获取关联数据 $value = $this->getRelationData($modelRelation); @@ -1075,24 +1076,6 @@ abstract class Model implements \JsonSerializable, \ArrayAccess return $data; } - /** - * 检查属性是否为关联属性 如果是则返回关联方法名 - * @access public - * @param string $attr 关联属性名 - * @return string|false - */ - protected function isRelationAttr($attr) - { - $relation = Loader::parseName($attr, 1, false); - - if (!empty($this->relationAttr) && in_array($attr, $this->relationAttr)) { - return $relation; - } elseif (method_exists($this, $relation)) { - return $relation; - } - return false; - } - /** * 保存多个数据到当前数据对象 * @access public diff --git a/library/think/model/relation/BelongsTo.php b/library/think/model/relation/BelongsTo.php index 9a308d23..905ea944 100644 --- a/library/think/model/relation/BelongsTo.php +++ b/library/think/model/relation/BelongsTo.php @@ -148,7 +148,7 @@ class BelongsTo extends OneToOne $this->bindAttr($relationModel, $result, $this->bindAttr); } // 设置关联属性 - $result->setAttr($attr, $relationModel); + $result->setRelation($attr, $relationModel); } } } @@ -180,7 +180,7 @@ class BelongsTo extends OneToOne $this->bindAttr($relationModel, $result, $this->bindAttr); } // 设置关联属性 - $result->setAttr(Loader::parseName($relation), $relationModel); + $result->setRelation(Loader::parseName($relation), $relationModel); } /** @@ -197,7 +197,7 @@ class BelongsTo extends OneToOne $this->parent->setAttr($foreignKey, $model->$pk); $this->parent->save(); - return $this->parent->setAttr($this->relation, $model); + return $this->parent->setRelation($this->relation, $model); } /** @@ -212,6 +212,6 @@ class BelongsTo extends OneToOne $this->parent->setAttr($foreignKey, null); $this->parent->save(); - return $this->parent->setAttr($this->relation, null); + return $this->parent->setRelation($this->relation, null); } } diff --git a/library/think/model/relation/BelongsToMany.php b/library/think/model/relation/BelongsToMany.php index 341e0a76..79684fe7 100644 --- a/library/think/model/relation/BelongsToMany.php +++ b/library/think/model/relation/BelongsToMany.php @@ -267,7 +267,7 @@ class BelongsToMany extends Relation $data[$result->$pk] = []; } - $result->setAttr($attr, $this->resultSetBuild($data[$result->$pk])); + $result->setRelation($attr, $this->resultSetBuild($data[$result->$pk])); } } } @@ -293,7 +293,7 @@ class BelongsToMany extends Relation if (!isset($data[$pk])) { $data[$pk] = []; } - $result->setAttr(Loader::parseName($relation), $this->resultSetBuild($data[$pk])); + $result->setRelation(Loader::parseName($relation), $this->resultSetBuild($data[$pk])); } } diff --git a/library/think/model/relation/HasMany.php b/library/think/model/relation/HasMany.php index 903293f0..9624fc67 100644 --- a/library/think/model/relation/HasMany.php +++ b/library/think/model/relation/HasMany.php @@ -95,7 +95,7 @@ class HasMany extends Relation $relationModel->setParent(clone $result); } - $result->setAttr($attr, $this->resultSetBuild($data[$result->$localKey])); + $result->setRelation($attr, $this->resultSetBuild($data[$result->$localKey])); } } } @@ -124,7 +124,7 @@ class HasMany extends Relation $relationModel->setParent(clone $result); } - $result->setAttr(Loader::parseName($relation), $this->resultSetBuild($data[$result->$localKey])); + $result->setRelation(Loader::parseName($relation), $this->resultSetBuild($data[$result->$localKey])); } } diff --git a/library/think/model/relation/HasOne.php b/library/think/model/relation/HasOne.php index e5a557a0..c500c02a 100644 --- a/library/think/model/relation/HasOne.php +++ b/library/think/model/relation/HasOne.php @@ -146,7 +146,7 @@ class HasOne extends OneToOne } } // 设置关联属性 - $result->setAttr($attr, $relationModel); + $result->setRelation($attr, $relationModel); } } } @@ -179,7 +179,7 @@ class HasOne extends OneToOne } } - $result->setAttr(Loader::parseName($relation), $relationModel); + $result->setRelation(Loader::parseName($relation), $relationModel); } } diff --git a/library/think/model/relation/MorphMany.php b/library/think/model/relation/MorphMany.php index a4a2f500..87c2d66c 100644 --- a/library/think/model/relation/MorphMany.php +++ b/library/think/model/relation/MorphMany.php @@ -129,7 +129,7 @@ class MorphMany extends Relation $relationModel->setParent(clone $result); $relationModel->isUpdate(true); } - $result->setAttr($attr, $this->resultSetBuild($data[$result->$pk])); + $result->setRelation($attr, $this->resultSetBuild($data[$result->$pk])); } } } @@ -161,7 +161,7 @@ class MorphMany extends Relation $relationModel->isUpdate(true); } - $result->setAttr(Loader::parseName($relation), $this->resultSetBuild($data[$result->$pk])); + $result->setRelation(Loader::parseName($relation), $this->resultSetBuild($data[$result->$pk])); } } diff --git a/library/think/model/relation/MorphOne.php b/library/think/model/relation/MorphOne.php index f8124ee3..4dfd1c0f 100644 --- a/library/think/model/relation/MorphOne.php +++ b/library/think/model/relation/MorphOne.php @@ -129,7 +129,7 @@ class MorphOne extends Relation $relationModel->isUpdate(true); } - $result->setAttr($attr, $relationModel); + $result->setRelation($attr, $relationModel); } } } @@ -161,7 +161,7 @@ class MorphOne extends Relation $relationModel = null; } - $result->setAttr(Loader::parseName($relation), $relationModel); + $result->setRelation(Loader::parseName($relation), $relationModel); } } diff --git a/library/think/model/relation/MorphTo.php b/library/think/model/relation/MorphTo.php index 7dc22652..df104a90 100644 --- a/library/think/model/relation/MorphTo.php +++ b/library/think/model/relation/MorphTo.php @@ -177,7 +177,7 @@ class MorphTo extends Relation $relationModel->setParent(clone $result); $relationModel->isUpdate(true); - $result->setAttr($attr, $relationModel); + $result->setRelation($attr, $relationModel); } } } @@ -232,7 +232,7 @@ class MorphTo extends Relation $data->setParent(clone $result); $data->isUpdate(true); } - $result->setAttr(Loader::parseName($relation), $data ?: null); + $result->setRelation(Loader::parseName($relation), $data ?: null); } /** @@ -251,7 +251,7 @@ class MorphTo extends Relation $this->parent->setAttr($morphType, get_class($model)); $this->parent->save(); - return $this->parent->setAttr($this->relation, $model); + return $this->parent->setRelation($this->relation, $model); } /** @@ -268,7 +268,7 @@ class MorphTo extends Relation $this->parent->setAttr($morphType, null); $this->parent->save(); - return $this->parent->setAttr($this->relation, null); + return $this->parent->setRelation($this->relation, null); } /** @@ -277,6 +277,5 @@ class MorphTo extends Relation * @return void */ protected function baseQuery() - { - } + {} } diff --git a/library/think/model/relation/OneToOne.php b/library/think/model/relation/OneToOne.php index 4368618e..ff066ed3 100644 --- a/library/think/model/relation/OneToOne.php +++ b/library/think/model/relation/OneToOne.php @@ -257,7 +257,7 @@ abstract class OneToOne extends Relation } else { $relationModel = null; } - $result->setAttr(Loader::parseName($relation), $relationModel); + $result->setRelation(Loader::parseName($relation), $relationModel); } /** @@ -317,6 +317,5 @@ abstract class OneToOne extends Relation * @return void */ protected function baseQuery() - { - } + {} }