File tree Expand file tree Collapse file tree 1 file changed +9
-6
lines changed Expand file tree Collapse file tree 1 file changed +9
-6
lines changed Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments