#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 полями). Возможно, я подам предложение / проблему, если это покажется уместным.