Symfony2 «класс не найден в цепочке» в двух связках
При попытке определить отношение «один ко многим» в разных пакетах происходит следующее:
Класс 'Mana \ ClientBundle \ Entity \ член» не было найдено в цепочке настроенных пространств имен Mana \ SplitBundle \ Entity
Обновление 3: яТеперь мы увидели противоречивые ответы о том, что отношения могут и не могут быть достигнуты. Предполагая, что это возможно (потому что другие здесь в stackoverflow, кажется, сделали это), какая конфигурация требуется, кроме регистрации пакетов в AppKernel.php и ввода аннотаций в объектах?resolve_target_entity_listener
не похоже, чтобы изменить ситуацию.
Ну я знаюЭто далеко от моей глубины, но это то, что я наблюдал, шагая по коду при попытке показать сущность клиента.
Сообщение об ошибке в профилировщике
Целевая сущностьMana \ ClientBundle \ Entity \ член» указанный в Mana \ SplitBundle \ Entity \ Client # член неизвестен или не является сущностью.
происходит потому, что SchemaValidator оценивает$cmf->isTransient($assoc['targetEntity'])
в true, где targetEntity в сущности Member. Комментарий PHPdoc предполагает, что этот объектМетаданные не загружены. Если я правильно понимаю, это означает, что аннотация относительно отношений не загружена. Но наблюдение значений переменных предполагает, что аннотации были прочитаны.
Я полностью пропускаю что-то, что должно быть до боли очевидным? Или я слишком далеко в левом поле?
Обновление 1:Я подтвердил, что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