diff --git a/library/think/model/relation/BelongsTo.php b/library/think/model/relation/BelongsTo.php index d0973614..cd5c04c0 100644 --- a/library/think/model/relation/BelongsTo.php +++ b/library/think/model/relation/BelongsTo.php @@ -130,7 +130,7 @@ class BelongsTo extends OneToOne $relationModel = null; } else { $relationModel = $data[$result->$foreignKey]; - $relationModel->setParent($result); + $relationModel->setParent(clone $result); $relationModel->isUpdate(true); } @@ -163,7 +163,7 @@ class BelongsTo extends OneToOne $relationModel = null; } else { $relationModel = $data[$result->$foreignKey]; - $relationModel->setParent($result); + $relationModel->setParent(clone $result); $relationModel->isUpdate(true); } if ($relationModel && !empty($this->bindAttr)) { diff --git a/library/think/model/relation/HasMany.php b/library/think/model/relation/HasMany.php index 3fc9f746..2f0d30b8 100644 --- a/library/think/model/relation/HasMany.php +++ b/library/think/model/relation/HasMany.php @@ -86,7 +86,7 @@ class HasMany extends Relation } foreach ($data[$result->$localKey] as &$relationModel) { - $relationModel->setParent($result); + $relationModel->setParent(clone $result); } $result->setAttr($attr, $this->resultSetBuild($data[$result->$localKey])); @@ -115,7 +115,7 @@ class HasMany extends Relation } foreach ($data[$result->$localKey] as &$relationModel) { - $relationModel->setParent($result); + $relationModel->setParent(clone $result); } $result->setAttr(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 a19d9a4b..27627627 100644 --- a/library/think/model/relation/HasOne.php +++ b/library/think/model/relation/HasOne.php @@ -132,7 +132,7 @@ class HasOne extends OneToOne $relationModel = null; } else { $relationModel = $data[$result->$localKey]; - $relationModel->setParent($result); + $relationModel->setParent(clone $result); $relationModel->isUpdate(true); if (!empty($this->bindAttr)) { // 绑定关联属性 @@ -165,7 +165,7 @@ class HasOne extends OneToOne $relationModel = null; } else { $relationModel = $data[$result->$localKey]; - $relationModel->setParent($result); + $relationModel->setParent(clone $result); $relationModel->isUpdate(true); if (!empty($this->bindAttr)) { // 绑定关联属性 diff --git a/library/think/model/relation/MorphMany.php b/library/think/model/relation/MorphMany.php index 7142314b..6b1ca7b3 100644 --- a/library/think/model/relation/MorphMany.php +++ b/library/think/model/relation/MorphMany.php @@ -120,7 +120,7 @@ class MorphMany extends Relation $data[$result->$pk] = []; } foreach ($data[$result->$pk] as &$relationModel) { - $relationModel->setParent($result); + $relationModel->setParent(clone $result); $relationModel->isUpdate(true); } $result->setAttr($attr, $this->resultSetBuild($data[$result->$pk])); @@ -147,7 +147,7 @@ class MorphMany extends Relation ], $relation, $subRelation, $closure); foreach ($data[$result->$pk] as &$relationModel) { - $relationModel->setParent($result); + $relationModel->setParent(clone $result); $relationModel->isUpdate(true); } diff --git a/library/think/model/relation/MorphOne.php b/library/think/model/relation/MorphOne.php index c2547c0a..b1e4c3d1 100644 --- a/library/think/model/relation/MorphOne.php +++ b/library/think/model/relation/MorphOne.php @@ -120,7 +120,7 @@ class MorphOne extends Relation $relationModel = null; } else { $relationModel = $data[$result->$pk]; - $relationModel->setParent($result); + $relationModel->setParent(clone $result); $relationModel->isUpdate(true); } @@ -150,7 +150,7 @@ class MorphOne extends Relation if (isset($data[$pk])) { $relationModel = $data[$pk]; - $data[$pk]->setParent($result); + $data[$pk]->setParent(clone $result); $relationModel->isUpdate(true); } else { $relationModel = null; diff --git a/library/think/model/relation/MorphTo.php b/library/think/model/relation/MorphTo.php index 304186dc..c6a2211b 100644 --- a/library/think/model/relation/MorphTo.php +++ b/library/think/model/relation/MorphTo.php @@ -169,7 +169,7 @@ class MorphTo extends Relation throw new Exception('relation data not exists :' . $this->model); } else { $relationModel = $data[$result->$morphKey]; - $relationModel->setParent($result); + $relationModel->setParent(clone $result); $relationModel->isUpdate(true); $result->setAttr($attr, $relationModel); @@ -224,7 +224,7 @@ class MorphTo extends Relation $pk = $this->parent->{$this->morphKey}; $data = (new $model)->with($subRelation)->find($pk); if ($data) { - $data->setParent($result); + $data->setParent(clone $result); $data->isUpdate(true); } $result->setAttr(Loader::parseName($relation), $data ?: null); diff --git a/library/think/model/relation/OneToOne.php b/library/think/model/relation/OneToOne.php index 7dc5e47e..4368618e 100644 --- a/library/think/model/relation/OneToOne.php +++ b/library/think/model/relation/OneToOne.php @@ -248,7 +248,7 @@ abstract class OneToOne extends Relation if (isset($list[$relation])) { $relationModel = new $model($list[$relation]); - $relationModel->setParent($result); + $relationModel->setParent(clone $result); $relationModel->isUpdate(true); if (!empty($this->bindAttr)) {