Browse Source

processModelAsArray by PK

tags/1.3.0
DD174 7 years ago committed by GitHub
parent
commit
238308f9c6
  1. 35
      src/SaveRelationsBehavior.php

35
src/SaveRelationsBehavior.php

@ -167,23 +167,32 @@ class SaveRelationsBehavior extends Behavior
// Get the related model foreign keys // Get the related model foreign keys
if (is_array($data)) { if (is_array($data)) {
$fks = []; $fks = [];
// Get the right link definition // search PK
if ($relation->via instanceof BaseActiveRecord) { foreach($modelClass::primaryKey() as $modelAttribute) {
$viaQuery = $relation->via;
$link = $viaQuery->link;
} elseif (is_array($relation->via)) {
list($viaName, $viaQuery) = $relation->via;
$link = $viaQuery->link;
} else {
$link = $relation->link;
}
foreach ($link as $relatedAttribute => $modelAttribute) {
if (array_key_exists($modelAttribute, $data) && !empty($data[$modelAttribute])) { if (array_key_exists($modelAttribute, $data) && !empty($data[$modelAttribute])) {
$fks[$modelAttribute] = $data[$modelAttribute]; $fks[$modelAttribute] = $data[$modelAttribute];
} }
} }
if (!$fks) {
// Get the right link definition
if ($relation->via instanceof BaseActiveRecord) {
$viaQuery = $relation->via;
$link = $viaQuery->link;
} elseif (is_array($relation->via)) {
list($viaName, $viaQuery) = $relation->via;
$link = $viaQuery->link;
} else {
$link = $relation->link;
}
foreach ($link as $relatedAttribute => $modelAttribute) {
if (array_key_exists($modelAttribute, $data) && !empty($data[$modelAttribute])) {
$fks[$modelAttribute] = $data[$modelAttribute];
}
}
}
} else { } else {
$fks = $data; $fks = $data;
} }

Loading…
Cancel
Save