Skip to content

Commit 2369bcc

Browse files
committed
Update RelationTrait.php
Fix bug method loadAll on Model update create new related row
1 parent 7567ce1 commit 2369bcc

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

RelationTrait.php

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,25 @@ public function loadAll($POST) {
2323
$isHasMany = is_array($value);
2424
$relName = ($isHasMany) ? lcfirst($key) . 's' : lcfirst($key);
2525
$rel = $this->getRelation($relName);
26-
if ($isHasMany) {
27-
$container = [];
28-
foreach ($value as $relPost) {
29-
/* @var $relObj ActiveRecord */
26+
$relModelClass = $rel->modelClass;
27+
$relPKAttr = $relModelClass::primaryKey();
28+
// $isCompositePK = (count($relPKAttr) > 1);
29+
// if(!$isCompositePK){
30+
if ($isHasMany) {
31+
$container = [];
32+
foreach ($value as $relPost) {
33+
/* @var $relObj ActiveRecord */
34+
$relObj = (isset($relPost[$relPKAttr[0]])) ? $relModelClass::findOne($relPost[$relPKAttr[0]]) : new $rel->modelClass;
35+
$relObj->load($relPost, '');
36+
$container[] = $relObj;
37+
}
38+
$this->populateRelation($relName, $container);
39+
} else {
3040
$relObj = new $rel->modelClass;
31-
$relObj->load($relPost, '');
32-
$container[] = $relObj;
41+
$relObj->load($value);
42+
$this->populateRelation($relName, $value);
3343
}
34-
$this->populateRelation($relName, $container);
35-
} else {
36-
$relObj = new $rel->modelClass;
37-
$relObj->load($value);
38-
$this->populateRelation($relName, $value);
39-
}
44+
// }
4045
}
4146
}
4247
return true;

0 commit comments

Comments
 (0)