Skip to content

Commit f925e73

Browse files
committed
fix delete ids compute
1 parent 76d1486 commit f925e73

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

src/Form/Control/Multiline.php

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -331,20 +331,23 @@ public function setInputValue(string $value): void
331331
}
332332
}
333333

334+
$refModelOrEntity = $this->entityField->getField()->hasReference()
335+
? $this->entityField->getField()->getReference()->ref($this->entityField->getEntity())
336+
: $this->model;
337+
334338
$changes = new TheirChanges();
335-
$model = $this->model;
336339

337340
// TODO this is dangerous, deleted row IDs should be passed from UI
338-
$idsToDelete = array_filter(array_column($rowData, $model->idField), static fn ($v) => $v !== null);
339-
foreach ($model->createIteratorBy($model->idField, 'not in', $idsToDelete) as $entity) {
340-
$changes->deletes[] = [$model->idField => $entity->getId()];
341+
$idsToDelete = array_filter(array_column($rowData, $refModelOrEntity->idField), static fn ($v) => $v !== null);
342+
foreach ($refModelOrEntity->getModel(true)->createIteratorBy($refModelOrEntity->idField, 'not in', $idsToDelete) as $entity) {
343+
$changes->deletes[] = [$refModelOrEntity->idField => $entity->getId()];
341344
}
342345

343346
foreach ($rowData as $row) {
344-
if ($row[$model->idField] === null) {
347+
if ($row[$refModelOrEntity->idField] === null) {
345348
$changes->inserts[] = $row;
346349
} else {
347-
$changes->updates[] = [[$model->idField => $row[$model->idField]], $row];
350+
$changes->updates[] = [[$refModelOrEntity->idField => $row[$refModelOrEntity->idField]], $row];
348351
}
349352
}
350353

0 commit comments

Comments
 (0)