2012-12-12 10 views
8

Mam dwa modele o nazwach Person i Tag. Jedna osoba ma wiele znaczników, a klucz podstawowy tagu to klucz złożony z person_id i tag (Person $person i w Doctrine2)."Brak odwzorowanego pola" przy użyciu częściowych zapytań i kluczy złożonych w Doctrine2

Istnieje pole danych (BLOB) w modelu Tag z dużą ilością danych. Przygotowuję zapytanie, które nie wymaga danych z tego pola, dlatego chcę skonfigurować zapytanie, które nie pobiera tego pola.

Próbowałem z następującym zapytaniem:

SELECT c, PARTIAL t.{tag} FROM Contact c LEFT JOIN c.tags 

Tutaj pojawia się nieco oczekiwany błąd Częściowa zaznaczenia pola klasy Tag musi zawierać identyfikator. Nie ma problemu, mogę dodać pola kontaktowe:

SELECT c, PARTIAL t.{contact,tag} FROM Contact c LEFT JOIN c.tags 

Ale teraz, mam Nie ma odwzorowane pola o nazwie „kontakt” na klasy Tag.

Czy Doctrine2 nie obsługuje częściowych zapytań dotyczących kluczy złożonych?

Oto klasa 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; 
} 
+0

dowiedziałeś się więcej na ten temat błąd @Nils? – jah

+1

@jah, niestety nie. Musiałem podzielić model Tag na dwa obiekty, aby uzyskać ogromne kawałki danych z drogi.Tak, w ten sposób mogę wybrać obiekty TagData, gdy potrzebuję również danych. bardzo eleganckie rozwiązanie, ale łatwe do zrozumienia i udokumentowania. – Nils

Odpowiedz

7

Ilekroć wykonanie częściowego wyboru trzeba to klucz podstawowy klasy masz wybór z.

Nie wyszczególniłeś swojego "kontaktu", ale zakładam, że podstawowym polem kluczowym tej klasy jest "id". Jeśli miało to miejsce wtedy następujące zapytanie będzie acheive co jesteś po:

SELECT c, PARTIAL t.{id, tag} FROM Contact c LEFT JOIN c.tags 

To nie wydaje się być udokumentowane :(

http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html#partial-object-syntax

Powiązane problemy