Allow @Id on @ManyToOne fields
(DDC-117)
|
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | DQL, ORM |
| Affects Version/s: | 2.0-RC1 |
| Fix Version/s: | 2.1 |
| Security Level: | All |
| Type: | Sub-task | Priority: | Major |
| Reporter: | Florian Zumkeller-Quast | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Environment: |
Doctrine 2 RC 1 with sfDoctrine2Plugin using ORM, DBAL, Common and Symfony/Component for RC 1 |
||
| Description |
|
If you got two Entities A and B where A is a sample Entity with a 1:n relation to the Entity B EntityA:
type: entity
table: entity_a
repositoryClass: EntityARepository
id:
id:
type: integer
generator:
strategy: AUTO
fields:
handle:
type: string
length: 32
unique: true
oneToMany:
entites_b:
targetEntity: EntityB
mappedBy: entity_a
cascade: [persist]
EntityB:
type: entity
table: entity_b
repositoryClass: EntityBRepository
id:
description:
type: string
length: 255
notnull: true
generator:
strategy: NONE
entitiy_a_id:
type: integer
length: 11
notnull: true
generator:
strategy: NONE
fields:
value:
type: string
length: 255
manyToOne:
entitiy_a:
targetEntity: EntitiyA
inversedBy: entities_b
Class EntityA { private $id; private $handle; private $b_coll; public function addB(EntityB $ent) { $this->b_coll->add($ent); $b->setA($this); } } Class EntityB { private $description; private $entity_a_id; private $value; private $entity_a; public function setA(EntityA $ent) { $this->entity_a = $ent; } } If you try to persist an object of A holding one or more references to objects of B, the objects get correctly persistet. This means, that every inserted record of B has a correctly filled field "entity_a_id". The objects of B also have a correct reference to A holding now the new A record with its autoinc id. |
| Comments |
| Comment by Benjamin Eberlei [ 10/Dec/10 ] |
|
Fixed formating |
| Comment by Benjamin Eberlei [ 10/Dec/10 ] |
|
When dealing with foreign keys as composite keys you are currently forced to make use of the "Assigned Id Generator". This means you have to make sure the IDs are set to their values before calling ->persist(). |
| Comment by Benjamin Eberlei [ 10/Dec/10 ] |
|
This issue will be fixed when |
| Comment by Benjamin Eberlei [ 02/Jan/11 ] |
|
Implemented |