На чем основана Доктрина при выборе INSERT или UPDATE?

В моем приложении в очень точном случае, когда я пытаюсь обновить объект с помощью Doctrine, это не удалось, потому что «Ключ уже существует».

Фактически, Doctrine пытается использовать INSERT INTO вместо UPDATE, и я не понимаю почему.

Чтобы понять, почему Doctrine не выбирает правильный путь, я хочу знать, на чем основана Doctrine при выборе INSERT INTO или UPDATE?

Вроде не по ID, ну и что?

Возможно, это поможет найти ответ: я использую PostgreSQL

Вы можете предоставить нам образец кода? Мы не сможем вам помочь без минимальный воспроизводимый пример

LP154 11.06.2018 15:07

@ LP154 Я не могу, поэтому я задаю вопрос: я не определяю шаблон для его воспроизведения. Дело в том, что данные обновления поступают из полезной нагрузки запроса, поэтому, возможно, Doctrine не обнаруживает, что это должно быть обновление?

Victor Castro 11.06.2018 15:15

Вы создали и заполнили сущность вручную, не загружая ее предварительно через Doctrine?

malarzm 11.06.2018 19:52

Да, я сделал это.

Victor Castro 11.06.2018 19:59

@LeCintas вам нужно сначала получить сущность, чтобы Doctrine знала о сущности и о том, как рассчитывать изменения, или объединить вашу сущность с EM. Решение ВСТАВИТЬ / ОБНОВИТЬ не может полагаться на наличие идентификатора, так как у вас может быть новый объект с вручную назначенным идентификатором, который требует вставки.

malarzm 12.06.2018 11:05

Я сделал $this->em->merge();, и у сущности есть @ORM\id(). Я нашел ответ на свою проблему: идентификатор дочерней сущности моей «основной» сущности не был установлен при обновлении, поэтому Doctrine решила создать новую «главную» запись сущности, чтобы удовлетворить Соотношение.

Victor Castro 12.06.2018 11:10
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
7
42
0

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