В попытке определить отношения «один ко многим» между пучками происходит следующее:
Класс Mana \ ClientBundle \ Entity \ Member не найден в цепочках имен, заданных цепочкой Mana \ SplitBundle \ Entity
- Symfony2 "@Type" в свойстве Genius \ ProfileBundle \ Entity \ Profil :: $ actualites никогда не импортировался
- Symfony2: невозможно смоделировать HTTP-аутентификацию в функциональном тесте
- Создайте форму как услугу в Symfony2
- Многие-ко-многим и образуют Symfony2
- Symfony2 ParamConverter не связан с @Annotation (кеш должен быть очищен после любого изменения файла)
Теперь я вижу противоречивые ответы, что отношения могут и не могут быть достигнуты. Исходя из предположения, что он может (поскольку другие здесь, например, в stackoverflow, похоже, это сделал), какая конфигурация требуется, кроме регистрации пакетов в AppKernel.php и ввода аннотаций в сущности? resolve_target_entity_listener
что resolve_target_entity_listener
не имеет значения.
Ну, я знаю, что я вышел из своей глубины здесь, но это то, что я наблюдал, когда я перешагивал код при попытке показать объект клиента.
Сообщение об ошибке в профилировщике
Целевой объект Mana \ ClientBundle \ Entity \ Member, указанный в Mana \ SplitBundle \ Entity \ Client #, неизвестен или не является сущностью.
происходит потому, что SchemaValidator оценивает $cmf->isTransient($assoc['targetEntity'])
на true, где targetEntity в объекте Member. Комментарий PHPdoc предполагает, что метаданные этого объекта не загружены. Если я правильно понимаю это, это означает, что аннотация относительно отношения не загружена. Но наблюдение переменных значений позволяет предположить, что аннотации были прочитаны.
Неужели я полностью упускаю то, что должно быть болезненно очевидным? Или я слишком далеко в левом поле?
Я подтвердил, что doctrine:mapping:info
обнаружит неправильный FQCN. Данные светильники верны. Правильное использование диспетчеров сущностей и подключения к базе данных для соединений по умолчанию и разбить. Ошибка сохраняется и может возникать для любого из отношений, определенных в объекте Client, либо OneToMany, либо ManyToOne.
doctrine: dbal: default_connection: default connections: default: driver: "%database_driver%" host: "%database_host%" port: "%database_port%" dbname: "%database_name%" user: "%database_user%" password: "%database_password%" charset: UTF8 mapping_types: enum: string split: driver: "%database_driver2%" host: "%database_host2%" port: "%database_port2%" dbname: "%database_name2%" user: "%database_user2%" password: "%database_password2%" charset: UTF8 mapping_types: enum: string entity_managers: default: connection: default mappings: ManaClientBundle: ~ split: connection: split mappings: ManaSplitBundle: ~
/** * @ORM\OneToMany(targetEntity="Mana\ClientBundle\Entity\Member", mappedBy="client") * @ORM\OrderBy({"dob" = "ASC"}) */ protected $members;
/** * @ORM\ManyToOne(targetEntity="Mana\SplitBundle\Entity\Client",inversedBy="members",cascade={"remove", "persist"}) * @ORM\JoinColumn(name="cid", referencedColumnName="id") * */ protected $client;
$ php app/console doctrine:mapping:info Found 12 mapped entities: [OK] Mana\ClientBundle\Entity\Agency [OK] Mana\ClientBundle\Entity\Center [OK] Mana\ClientBundle\Entity\Contact [OK] Mana\ClientBundle\Entity\Contactdesc [OK] Mana\ClientBundle\Entity\Counties [OK] Mana\ClientBundle\Entity\Ethnicity [OK] Mana\ClientBundle\Entity\Incomehistory [OK] Mana\ClientBundle\Entity\Incomesrc [OK] Mana\ClientBundle\Entity\Member [OK] Mana\ClientBundle\Entity\Note [OK] Mana\ClientBundle\Entity\Referral [OK] Mana\ClientBundle\Entity\User $ php app/console doctrine:mapping:info --em=split Found 1 mapped entities: [OK] Mana\SplitBundle\Entity\Client
Вы должны увидеть Использование отношений с несколькими менеджерами сущностей
Связь с перекрестными связями не может управляться Doctrine, если у вас есть отдельные базы данных с отдельными подключениями и менеджерами сущностей. Вместо этого в этом случае объект клиента должен будет находиться в той же схеме / пакете и периодически обновляться от внешнего источника.
Но если у вас есть только одно подключение к базе данных и один менеджер сущностей для него, вы можете управлять отношениями между связями. (Описан здесь: отношение OneToMany к объектам кросс-проекта (Symfony2 / Doctrine) )