Jak walidować importowane encje??

0

Witam,
w moim projekcie opartym na symfony 4 pojawiła się potrzeba importowania danych z pliku. Całą otoczkę zagadnienia już wykonałem jednakże chciałbym zapisywać zaimportowane dane do bazy danych w grupach w razie przypadku, gdy użytkownik wrzuci plik z dużą ilością danych, aby dane z niego w miarę sprawnie załadować do bazy. Tak więc najpierw wrzucam załadowane dane do tablicy, a potem za pomocą odpowiedniego serwisu przydzielam im właściwy model danych, który potem waliduję, wrzucam do odpowiedniej encji i wykonuje metodę persist() z entity menadżera i dopiero gdy wykonam persist na powiedzmy 10 encjach chcę wrzucić wszystko do bazy za pomocą metody flush(). Przykładowy kod poniżej:

$batchSize = 10;
$i = 1;
foreach ($activities as $activity) {
    $entityManager->persist($activity);
    if (($i % $batchSize) === 0) {
        $entityManager->flush();
        $entityManager->clear();
    }
++$i;
}
$entityManager->flush();

I wszystko byłoby w porządku gdyby nie to, iż walidacja na modelu sprawdza także czy w bazie danych nie ma już encji która posiada kilka właściwości o tej samej wartości np. jeśli w bazie danych jest obiekt o typie A i nazwie B to nie można stworzyć drugiego, który ma takie same właściwości. Problem polega na tym, iż przy takim grupowym wrzucaniu do bazy danych za pomocą assertów z modelu nie jestem w stanie sprawdzić obiektu, który nie jest jeszcze w bazie danych i jeśli w jednej porcji danych wrzucanych do bazy znajdą się potencjalne duplikaty to zostają one uznane za zwalidowane poprawnie i zapisane w bazie. Czy jest jakiś sposób by rozwiązać ten problem bez tworzenia kolejnego serwisu, który będzie przechodził po całej tablicy modeli i wyszukiwał możliwe duplikaty?? Dzięki wielkie za jakiekolwiek sugestie.

1

Może zrób w bazie unique na tych polach

1 użytkowników online, w tym zalogowanych: 0, gości: 1