link multiple saver: skip not existing columns

This commit is contained in:
Yuri Kuznetsov
2024-07-26 16:50:28 +03:00
parent 19e4943410
commit e2aa06f755

View File

@@ -94,6 +94,16 @@ class LinkMultipleSaver
$columns = $defs->getField($name)->getParam('columns');
}
if (is_array($columns)) {
$additionalColumns = $defs->getRelation($name)->getParam('additionalColumns') ?? [];
foreach ($columns as $column => $field) {
if (!array_key_exists($column, $additionalColumns)) {
unset($columns[$column]);
}
}
}
$columnData = !empty($columns) ?
$entity->get($columnsAttribute) :
null;
@@ -175,8 +185,14 @@ class LinkMultipleSaver
foreach ($toCreateIdList as $id) {
$data = null;
if (!empty($columns) && isset($columnData->$id)) {
if (is_array($columns) && isset($columnData->$id)) {
$data = (array) $columnData->$id;
foreach ($data as $column => $v) {
if (!array_key_exists($column, $columns)) {
unset($data[$column]);
}
}
}
$repository->getRelation($entity, $name)->relateById($id, $data, [
@@ -193,6 +209,14 @@ class LinkMultipleSaver
foreach ($toUpdateIdList as $id) {
$data = (array) $columnData->$id;
if (is_array($columns)) {
foreach ($data as $column => $v) {
if (!array_key_exists($column, $columns)) {
unset($data[$column]);
}
}
}
$repository->getRelation($entity, $name)->updateColumnsById($id, (array) $data);
}
}