Oznámení

Fórum bylo uzavřeno. Využijte prosím služeb serverů JakPsatWeb, Builder nebo Webtrh.

#1 před rokem

Quinix
Člen
Registrovaný: 31. 3. 2009
Příspěvky: 33

Class Table Inheritance a výber podle typu

Mám entity News a Page propojené pomocí Class Table Inheritance. Zjednodušeně nějak takto:

/**
 * Description of Page
 * @Entity
 * @InheritanceType("JOINED")
 * @DiscriminatorColumn(name="type", type="string")
 * @DiscriminatorMap({
 *  "news" = "News" ,
 *  "page" = "Page"})
 *
 * @table(
 *  name="pages"
 * )
 */
class Page extends BaseEntity {...}
class News extends Page {...}

Vybrat jenom entity typu news můžu jednoduše SELECT ... FROM News n, je ale nějakým způsobem možný získat jenom entity typu page, který je mapovaný na tu rozšiřovanou třídu? Nebo musím vytvořit ještě extra entitu rozšiřující Page a dotazovat se přes ni?

 

#2 před rokem

Patrik Votoček
Nette Evangelist
Registrovaný: 8. 3. 2008
Příspěvky: 2120

Re: Class Table Inheritance a výber podle typu

Mám takové tušení že by mělo stačit jí uvést v discriminatorMap což máš. Nefunguje to?


Sorry my bad english.
Vrtak-CZ | Nella Project | Osobní Blog | Twitter | LinkedIn | GitHub
„Nastala chyba která neměla nastat“ aneb „Když se chce všechno jde.“

 

#3 před rokem

Quinix
Člen
Registrovaný: 31. 3. 2009
Příspěvky: 33

Re: Class Table Inheritance a výber podle typu

No právě že ne. DQL, které leze z Query Builderu je SELECT ... FROM Page p INNER JOIN p.category c INNER JOIN p.user u WHERE ... ale přeloží se to na dotaz přes všechny entity, které dědí od Page a vrací to všechno…

A WHERE na DiscriminatorColumn taky nefunguje, protože není součástí entity… :(

EDIT: Tak jsem se zeptal v doctrine-user group a do hodiny měl řešení – INSTANCE OF ve WHERE… :-)

http://groups.google.com/…52ed447204e2

Editoval Quinix (22. 2. 2011 17:25)

 

Zápatí