Vorrei estendere le classi Entità \ Base, come farlo in Doctrine 2.1? La mia ricerca ha dimostrato che ogni volta che qualcuno incontra il problema nel fare ciò passa a Doctrine 1.2:) n sto usando la configurazione di yamlDottrina: estensione della classe di entità
risposta
Doctrine 2.X Le entità funzionano come POPO (Plain Old PHP Objects). Per ottenere un'estensione corretta, Doctrine impone l'utilizzo di un concetto di JPA denominato Super classi mappate. L'idea è piuttosto semplice. Ogni volta che vuoi avere una classe base e vuoi che le tue entità si estendano da essa (non sto parlando di ereditarietà a livello di DB), tutto ciò che devi fare è creare la tua classe Base come MappedSuperClass.
Ecco un esempio: http://www.doctrine-project.org/docs/orm/2.1/en/reference/inheritance-mapping.html#mapped-superclasses
Grazie
Ho fatto qualcosa di simile, grazie per lo sforzo, anche se il problema è stato risolto un paio di giorni fa contrassegnerò la tua risposta come giusto comunque – mkk
Potresti aver postato la soluzione, lo sai. L'intero scopo di questa comunità è di aiutarci a vicenda. –
@NikolaPetkanski hai ragione al 100%, e puoi osservare che rispondo alla mia stessa domanda se trovo una soluzione. – mkk
Ecco la soluzione da collegamento Guilherme Blanco. Mi piace avere una soluzione pubblicata invece di un collegamento che alla fine non potrebbe più funzionare in futuro:
<?php
/** @MappedSuperclass */
class MappedSuperclassBase
{
/** @Column(type="integer") */
protected $mapped1;
/** @Column(type="string") */
protected $mapped2;
/**
* @OneToOne(targetEntity="MappedSuperclassRelated1")
* @JoinColumn(name="related1_id", referencedColumnName="id")
*/
protected $mappedRelated1;
// ... more fields and methods
}
/** @Entity */
class EntitySubClass extends MappedSuperclassBase
{
/** @Id @Column(type="integer") */
private $id;
/** @Column(type="string") */
private $name;
// ... more fields and methods
}
perché vuoi estenderlo? – jere
Vorrei creare una nuova classe che estenda la base, qualcosa come Utente estende UserBase. Attualmente tutte le classi base sono in Entities/Base quindi vorrei creare nuove classi in Entities e estenderanno Entities/Base classes – mkk
@jaro Vorrei seguire lo schema di Doctrine 1.2 che ho classi base e classi normali, Estendo le classi base per poter scrivere i miei metodi personalizzati. Il problema è che le classi base sono generate automaticamente e non voglio perdere codice ogni volta che cambio qualcosa nel modello. – mkk