Что такое конфликт полей дискриминатора в PHP Doctrine MongoDB ODM? - PullRequest
0 голосов
/ 25 мая 2018

Что это означает, когда ошибка

Поле дискриминатора "x" в "y" конфликтует с атрибутом "name" сопоставленного поля.

?1007 *

Более конкретно я имею в виду это условие:

    if ($this->discriminatorField !== null && $this->discriminatorField === $mapping['name']) {
        throw MappingException::discriminatorFieldConflict($this->name, $this->discriminatorField);
    }

Код реферала

1 Ответ

0 голосов
/ 29 мая 2018

Поля дискриминатора не должны быть сопоставлены со свойствами, поэтому вы видите исключение.Теоретически, разработчики не должны интересоваться значением поля дискриминатора, поскольку для ODM полезно решить, какой объект следует создать или как запросить документы в случае наследования одной коллекции.В пользовательской среде все, о чем вы должны беспокоиться, это тип класса, с которым вы работаете.

Теперь для некоторой истории, исключение было введено в BETA-10 в 2013 , но до этого такженевозможно сопоставить дискриминатор со свойством, коммит, кажется, усиливает защиту и вводит исключение, которое менее запутанно.Учитывая предыдущие изменения, сделанные 6 лет назад, я бы сказал, что невозможно получить доступ к полям дискриминатора через сопоставленные свойства.

...