From 480b56767b81a91552d71a1e536bd0eaff7cffbf Mon Sep 17 00:00:00 2001 From: thinkphp Date: Wed, 12 Dec 2018 17:17:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=E5=85=B3=E8=81=94save?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/model/relation/HasMany.php | 10 ++++++++-- library/think/model/relation/MorphMany.php | 12 +++++++++++- library/think/model/relation/MorphOne.php | 12 +++++++++++- 3 files changed, 30 insertions(+), 4 deletions(-) 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; }