Используя как базовое, так И ассоциативное сопоставление для одного поля с Doctrine?

#doctrine #mapping

#доктрина #сопоставление

Вопрос:

У меня есть Variable объект, который может принадлежать group

Я сопоставляю Variable поле, содержащее FK Group , с идентификатором пользователя и его ассоциацией отношений в моем объекте домена. (с использованием XMl).
Другими словами, мой доменный объект имеет как (строковое) поле с идентификатором, так и поле «отношение» к объекту.
Предполагаемая цель здесь — получить готовый Group объект при запросе, просто установив идентификатор при записи

Поэтому, когда я создаю / обновляю a Variable , я устанавливаю идентификатор (а не объект отношения).
Моя проблема: значение (всегда) правильно сохраняется при ОБНОВЛЕНИИ, но (всегда) теряется при ВСТАВКЕ.

Вот часть моего сопоставления :

     <field name="parentId" type="string" length="36" column="parent" nullable="true"/>
    <many-to-one field="parent" target-entity="AppDomainVariablesGroupVariablesGroup" fetch="EAGER">
        <join-column name="parent" referenced-column-name="id" nullable="true"/>
    </many-to-one>
  

Документы мне здесь не очень помогли, поскольку эти 2 сопоставления описаны отдельно и, возможно, не предназначены для смешивания таким образом.

Но я бы предпочел избегать запросов Group к базе данных from и заполнять поле объекта, когда в этом нет необходимости.
Поскольку я не нашел, как Doctrine обрабатывает это под капотом, я думаю, это может быть что-то не поддерживаемое: (

Технические уточнения об этих сопоставлениях -взаимодействие (или я должен сказать конфликт ?) приветствовалось бы.

Ответ №1:

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

Хотя мой код этого не допускает, если я сохраню свою сущность с groupId = 1 и Group = (групповой объект с идентификатором 2), я получаю чередование значений для сохраненного значения в столбце «родительский» моей базы данных.

Я предполагаю, что это связано с тем, что Doctrine пропускает «бесполезное» обновление и переходит к тому, которое эффективно изменяет значение данных. Поскольку оба значения разные, пропущенное обновление заменяется.

Если мои предположения верны, Doctrine лучше выдаст ошибку в таком случае сопоставления. (как это происходит, если вы сопоставляете один столбец с 2 полями). Возможно, я подам предложение / проблему, если это покажется уместным.