diff --git a/library/think/model/relation/HasMany.php b/library/think/model/relation/HasMany.php index 5ee317c3..c4b31af9 100644 --- a/library/think/model/relation/HasMany.php +++ b/library/think/model/relation/HasMany.php @@ -201,14 +201,26 @@ class HasMany extends Relation * @return Model|false */ public function save($data) + { + $model = $this->make($data); + return $model->save($data) ? $model : false; + } + + /** + * 创建关联对象实例 + * @param array $data + * @return Model + */ + public function make($data = []) { if ($data instanceof Model) { $data = $data->getData(); } + // 保存关联表数据 - $model = new $this->model; $data[$this->foreignKey] = $this->parent->{$this->localKey}; - return $model->save($data) ? $model : false; + + return new $this->model($data); } /** diff --git a/library/think/model/relation/MorphMany.php b/library/think/model/relation/MorphMany.php index b3458e1b..941ebe8b 100644 --- a/library/think/model/relation/MorphMany.php +++ b/library/think/model/relation/MorphMany.php @@ -244,17 +244,30 @@ class MorphMany extends Relation * @return Model|false */ public function save($data) + { + $model = $this->make($data); + + return $model->save($data) ? $model : false; + } + + /** + * 创建关联对象实例 + * @param array $data + * @return Model + */ + public function make($data = []) { if ($data instanceof Model) { $data = $data->getData(); } + // 保存关联表数据 $pk = $this->parent->getPk(); - $model = new $this->model; $data[$this->morphKey] = $this->parent->$pk; $data[$this->morphType] = $this->type; - return $model->save($data) ? $model : false; + + return new $this->model($data); } /** diff --git a/library/think/model/relation/MorphOne.php b/library/think/model/relation/MorphOne.php index bbb1a919..1f4bffd7 100644 --- a/library/think/model/relation/MorphOne.php +++ b/library/think/model/relation/MorphOne.php @@ -53,7 +53,7 @@ class MorphOne extends Relation public function getRelation($subRelation = '', $closure = null) { if ($closure) { - call_user_func_array($closure, [& $this->query]); + call_user_func_array($closure, [ & $this->query]); } $relationModel = $this->relation($subRelation)->find(); @@ -179,7 +179,7 @@ class MorphOne extends Relation { // 预载入关联查询 支持嵌套预载入 if ($closure) { - call_user_func_array($closure, [& $this]); + call_user_func_array($closure, [ & $this]); } $list = $this->query->where($where)->with($subRelation)->find(); $morphKey = $this->morphKey; @@ -206,7 +206,7 @@ class MorphOne extends Relation /** * 创建关联对象实例 * @param array $data - * @return mixed + * @return Model */ public function make($data = []) {