Мне нужно вставить нескольких пользователей из файла Excel с помощью команды Symfony3. Я прочитал следующую статью о пакетной обработке: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/batch-processing.htmlSymfony3: обработка пакетной обработки Doctrine с обработкой исключений
Мне было интересно, есть ли способ остановить процесс промывки, когда запрос завершился неудачно (например, для не нулевого столбца). Мне бы хотелось, чтобы я не мог проверять все свои данные, прежде чем выполнять упорство, и позволить Doctrine продолжить вставки, даже если запрос завершился неудачно в 20-кратном запросе.
Благодарим за помощь.
С наилучшими пожеланиями,
В принципе нет. Нарушение ограничения в основном означает, что вы больше не можете использовать диспетчер объектов. Были разговоры об изменении этого, но еще ничего. Поэтому, столкнувшись с исключением, ваш единственный выбор заключается в создании совершенно нового объекта менеджера сущностей. ORM не настроен для пакетной обработки. Другой подход заключается в использовании уровня абстракции базы данных Doctrine (DBAL). – Cerad
Благодарим вас за ответ. Поэтому я предполагаю, что мои варианты - либо проверить все до сброса, либо использовать один флеш для каждого объекта и создавать экземпляр нового диспетчера объектов каждый раз, когда он терпит неудачу. Правильно? Что было бы неправильно при использовании флеша для объекта, если у меня есть 2000 записей для хранения в строке? Спасибо – mentinet
Ничего страшного в том, что после каждой сущности, если вы столкнетесь с проблемами производительности, ничего не получается. Но объекты 2K должны быть в порядке. 20K может быть не так много. И да, проверка, прежде чем пытаться сохранить, вероятно, стоит усилий. – Cerad