Есть ли встроенный способ / рекомендация для обработки повторяющихся записей, когда объекты вставляются без сброса для каждой записи?
Предположим, у нас есть физическое лицо с двумя полями. ID и личный номер. ID - это первичный ключ, но у personalNr также есть уникальное ограничение.
Теперь я повторяю файл csv, в котором один PersonalNr может быть указан в нескольких строках.
Если строка содержит личный номер, я проверяю в репозитории, существует ли запись с этим личным номером. Если да, я привязываю набор данных к человеку с личным номером. Если нет, я создаю нового человека с личным номером и затем связываю его с набором данных.
Теперь проблема в следующем:
Если personalNr встречается более одного раза в файле csv, набор данных уже существует в диспетчере сущностей, когда я нахожу его снова, но он еще не сохранен в базе данных (до сих пор я не вызывал сброса). При проверке репозитория будет сказано: «В репозитории нет сущности», но менеджер сущностей выдаст исключение повторяющейся записи при сбросе, потому что он пытается создать несколько сущностей с одинаковым личным номером.
Как этого избежать? Единственный способ сохранить то, что уже было вставлено, или нет самостоятельно? Есть ли в доктрине такой механизм проверки?
Спасибо
В Doctrine ничего не встроено. Я просто создаю себе массив значений personalNr и проверяю этот массив по мере обработки каждой строки. Я мог бы добавить, что переход к прямому sql, если он намного более эффективен для импорта со значительным количеством записей.
Я очень недоволен этой ситуацией. Это означает гораздо больше накладных расходов и логики в модулях, которые не отвечают за такие вещи. Спасибо.






Думаю, это ответит на ваш вопрос: stackoverflow.com/questions/9699613/…