@AssociationOverride and @AttributeOverride in the new Doctrine 2.3

According to the title, what is the purpose of the new annotation @AssociationOverride and @AttributeOverride ?

The only thing I can find on the Doctrine website:

@AssociationOverride and @AttributeOverride (useful for Trait and MappedSuperclass)

+4
source share
1 answer

After examining the code in commit , we see that it is used to override the field mapping already defined in the associated superclass / tag.

Tests included in the commit demonstrate this behavior:

Mapped superclass

 /** * @MappedSuperclass */ class User { /** * @Id * @GeneratedValue * @Column(type="integer", name="user_id", length=150) */ protected $id; /** * @Column(name="user_name", nullable=true, unique=false, length=250) */ protected $name; /** * @var ArrayCollection * * @ManyToMany(targetEntity="Group", inversedBy="users", cascade={"persist", "merge", "detach"}) * @JoinTable(name="users_groups", * joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")}, * inverseJoinColumns={@JoinColumn(name="group_id", referencedColumnName="id")} * ) */ protected $groups; /** * @var Address * * @ManyToOne(targetEntity="Address", cascade={"persist", "merge"}) * @JoinColumn(name="address_id", referencedColumnName="id") */ protected $address; ... } 

Subclass using @AssociationOverride

 /* * @Entity * @AssociationOverrides({ * @AssociationOverride(name="groups", * joinTable=@JoinTable ( * name="users_admingroups", * joinColumns=@JoinColumn (name="adminuser_id"), * inverseJoinColumns=@JoinColumn (name="admingroup_id") * ) * ), * @AssociationOverride(name="address", * joinColumns=@JoinColumn ( * name="adminaddress_id", referencedColumnName="id" * ) * ) * }) */ class Admin extends User { ... } 

Subclass using @AttributeOverride

 /** * @Entity * @AttributeOverrides({ * @AttributeOverride(name="id", * column=@Column ( * name = "guest_id", * type = "integer", * length = 140 * ) * ), * @AttributeOverride(name="name", * column=@Column ( * name = "guest_name", * nullable = false, * unique = true, * length = 240 * ) * ) * }) */ class Guest extends User { ... } 
+4
source

Source: https://habr.com/ru/post/1434144/


All Articles