diff --git a/library/think/model/relation/HasMany.php b/library/think/model/relation/HasMany.php index 8a55acbb..ebab051a 100644 --- a/library/think/model/relation/HasMany.php +++ b/library/think/model/relation/HasMany.php @@ -202,9 +202,15 @@ class HasMany extends Relation */ public function save($data) { - $model = $this->make($data); + if ($data instanceof Model) { + $data = $data->getData(); + } - return $model->save() ? $model : false; + // 保存关联表数据 + $data[$this->foreignKey] = $this->parent->{$this->localKey}; + + $model = new $this->model(); + return $model->save($data) ? $model : false; } /** diff --git a/library/think/model/relation/MorphMany.php b/library/think/model/relation/MorphMany.php index 63358cd1..2755d575 100644 --- a/library/think/model/relation/MorphMany.php +++ b/library/think/model/relation/MorphMany.php @@ -245,7 +245,17 @@ class MorphMany extends Relation */ public function save($data) { - $model = $this->make($data); + if ($data instanceof Model) { + $data = $data->getData(); + } + + // 保存关联表数据 + $pk = $this->parent->getPk(); + + $data[$this->morphKey] = $this->parent->$pk; + $data[$this->morphType] = $this->type; + + $model = new $this->model(); return $model->save() ? $model : false; } diff --git a/library/think/model/relation/MorphOne.php b/library/think/model/relation/MorphOne.php index 44be4034..5ec71724 100644 --- a/library/think/model/relation/MorphOne.php +++ b/library/think/model/relation/MorphOne.php @@ -199,7 +199,17 @@ class MorphOne extends Relation */ public function save($data) { - $model = $this->make($data); + if ($data instanceof Model) { + $data = $data->getData(); + } + + // 保存关联表数据 + $pk = $this->parent->getPk(); + + $data[$this->morphKey] = $this->parent->$pk; + $data[$this->morphType] = $this->type; + + $model = new $this->model(); return $model->save() ? $model : false; }