mirror of
https://github.com/espocrm/espocrm.git
synced 2026-07-01 08:26:04 +00:00
link multiple saver: skip not existing columns
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user