Ho due modelli chiamati Person
e Tag
. Una persona ha molti tag e la chiave primaria Tag è una chiave composta da person_id
e tag
(Person $person
e $tag
in Doctrine2)."Nessun campo mappato" quando si utilizzano query parziali e tasti compositi in Doctrine2
C'è un campo dati (BLOB
) nel modello Tag
con molti dati. Sto impostando una query che non richiede i dati da quel campo, quindi voglio impostare una query che non recuperi quel campo.
ho provato con la seguente query:
SELECT c, PARTIAL t.{tag} FROM Contact c LEFT JOIN c.tags
Qui, ottengo l'errore in qualche modo atteso La selezione campo parziale della classe Tag deve contenere l'identificatore. Nessun problema, ho aggiungere il campo di contatto:
SELECT c, PARTIAL t.{contact,tag} FROM Contact c LEFT JOIN c.tags
Ma ora, ottengo Non c'è campo mappato nome 'contatto' sulla classe Tag.
Doctrine2 non supporta query parziali su chiavi composite?
Ecco la classe Tag:
/** @Entity @Table(name="tag") **/
class Tag
{
/** @Id @ManyToOne(targetEntity="Contact",inversedBy="tags") @var Contact **/
protected $contact;
/** @Id @Column(type="string",length=10,nullable=false) @var string **/
protected $tag;
/** @Column(type="blob") **/
protected $data;
}
hai scoperto più su questo error @Nils? – jah
@jah, sfortunatamente no, ho dovuto dividere il modello Tag in due oggetti per ottenere enormi quantità di dati, in modo da poter selezionare gli oggetti TagData quando ho bisogno anche dei dati. una soluzione molto elegante, ma facile da capire e documentare. – Nils