5

タイトルごとに、新しい注釈の目的は何@AssociationOverrideですか@AttributeOverride

DoctrineのWebサイトで見つけることができるのは次のとおりです。

@AssociationOverrideおよび@AttributeOverride(TraitおよびMappedSuperclassに役立ちます)

4

1 に答える 1

5

commitのコードを見ると、マップされたスーパークラス/トレイトですでに定義されているフィールドマッピングをオーバーライドするために使用されていることがわかります。

コミットに含まれるテストは、この動作を示しています。

マップされたスーパークラス

/** 
 * @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;

    ...
}

を使用したサブクラス@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
{
    ...
}

を使用したサブクラス@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
{
    ...
}
于 2012-09-22T13:44:31.820 に答える