In an attempt to define a one-to-many relationship across bundles the following occurs:
The class 'Mana\ClientBundle\Entity\Member' was not found in the chain configured namespaces Mana\SplitBundle\Entity
Update 3:
I've now seen conflicting answers that the relationship can and cannot be accomplished. On the assumption that it can (because others here at stackoverflow seem to have done it), what configuration is required other than registering the bundles in AppKernel.php and entering the annotations in the entities? The resolve_target_entity_listener
did not appear to make a difference.
Update 2:
Well, I know I'm way out of my depth here, but this is what I observed while stepping through the code when trying to show a Client entity.
The error message in the profiler
The target entity 'Mana\ClientBundle\Entity\Member' specified on Mana\SplitBundle\Entity\Client#members is unknown or not an entity.
occurs because SchemaValidator evaluates $cmf->isTransient($assoc['targetEntity'])
to true, where the targetEntity in the Member entity. The PHPdoc comment suggests that this entity's metadata is not loaded. If I understand this correctly, that means that the annotation regarding the relationship is not loaded. But observing variable values suggests that the annotations have been read.
Am I totally missing something that should be painfully obvious? Or am I too far out in left field?
Update 1:
I have confirmed that doctrine:mapping:info
will detect improper FQCN. The data fixtures are correct. Use of entity managers and database-connection for both default and split connections are correct. The error persists and can occur for any of the relationships defined in the Client entity, either OneToMany or ManyToOne.
config.yml:
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: ~
Client entity:
/** * @ORM\OneToMany(targetEntity="Mana\ClientBundle\Entity\Member", mappedBy="client") * @ORM\OrderBy({"dob" = "ASC"}) */ protected $members;
Member entity:
/** * @ORM\ManyToOne(targetEntity="Mana\SplitBundle\Entity\Client",inversedBy="members",cascade={"remove", "persist"}) * @ORM\JoinColumn(name="cid", referencedColumnName="id") * */ protected $client;
Doctrine mapping:
$ 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