diff --git a/src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodWorkDuplicateController.php b/src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodWorkDuplicateController.php index 8cece72c2..e1ff84db2 100644 --- a/src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodWorkDuplicateController.php +++ b/src/Bundle/ChillPersonBundle/Controller/AccompanyingPeriodWorkDuplicateController.php @@ -45,7 +45,6 @@ class AccompanyingPeriodWorkDuplicateController extends AbstractController $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - dump($form->get('acpw')->getData()); $acpw2 = $this->accompanyingPeriodWorkRepository->find($form->get('acpw')->getData()); $direction = $form->get('direction')->getData(); diff --git a/src/Bundle/ChillPersonBundle/Service/AccompanyingPeriodWork/AccompanyingPeriodWorkMergeService.php b/src/Bundle/ChillPersonBundle/Service/AccompanyingPeriodWork/AccompanyingPeriodWorkMergeService.php index 2a146b559..b19b8012e 100644 --- a/src/Bundle/ChillPersonBundle/Service/AccompanyingPeriodWork/AccompanyingPeriodWorkMergeService.php +++ b/src/Bundle/ChillPersonBundle/Service/AccompanyingPeriodWork/AccompanyingPeriodWorkMergeService.php @@ -173,10 +173,21 @@ class AccompanyingPeriodWorkMergeService ]; } elseif (8 === $assoc['type'] && isset($assoc['joinTable'])) { if ($assoc['isOwningSide']) { + dump($assoc); $joinTable = $assoc['joinTable']['name']; $joinColumn = $assoc['joinTable']['joinColumns'][0]['name']; + $relationColumn = $assoc['joinTable']['inverseJoinColumns'][0]['name']; $queries[] = [ - 'sql' => "UPDATE {$joinTable} SET {$joinColumn} = :toKeep WHERE {$joinColumn} = :toDelete AND NOT EXISTS (SELECT 1 FROM {$joinTable} WHERE {$joinColumn} = :toKeep)", + 'sql' => " + UPDATE {$joinTable} SET {$joinColumn} = :toKeep + WHERE {$joinColumn} = :toDelete + AND NOT EXISTS ( + SELECT 1 + FROM {$joinTable} AS t2 + WHERE t2.{$joinColumn} = :toKeep + AND t2.{$relationColumn} = {$joinTable}.{$relationColumn} + ) + ", 'params' => ['toDelete' => $toDelete->getId(), 'toKeep' => $toKeep->getId()], ];