Доктрина: избегайте дублирования в одном процессе вставки

Есть ли встроенный способ / рекомендация для обработки повторяющихся записей, когда объекты вставляются без сброса для каждой записи?

Предположим, у нас есть физическое лицо с двумя полями. ID и личный номер. ID - это первичный ключ, но у personalNr также есть уникальное ограничение.

Теперь я повторяю файл csv, в котором один PersonalNr может быть указан в нескольких строках.

Если строка содержит личный номер, я проверяю в репозитории, существует ли запись с этим личным номером. Если да, я привязываю набор данных к человеку с личным номером. Если нет, я создаю нового человека с личным номером и затем связываю его с набором данных.

Теперь проблема в следующем:

Если personalNr встречается более одного раза в файле csv, набор данных уже существует в диспетчере сущностей, когда я нахожу его снова, но он еще не сохранен в базе данных (до сих пор я не вызывал сброса). При проверке репозитория будет сказано: «В репозитории нет сущности», но менеджер сущностей выдаст исключение повторяющейся записи при сбросе, потому что он пытается создать несколько сущностей с одинаковым личным номером.

Как этого избежать? Единственный способ сохранить то, что уже было вставлено, или нет самостоятельно? Есть ли в доктрине такой механизм проверки?

Спасибо

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

Aurelien 09.08.2018 11:12

В Doctrine ничего не встроено. Я просто создаю себе массив значений personalNr и проверяю этот массив по мере обработки каждой строки. Я мог бы добавить, что переход к прямому sql, если он намного более эффективен для импорта со значительным количеством записей.

Cerad 09.08.2018 14:01

Я очень недоволен этой ситуацией. Это означает гораздо больше накладных расходов и логики в модулях, которые не отвечают за такие вещи. Спасибо.

Jim Panse 09.08.2018 16:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
712
0

Другие вопросы по теме