|
Publicité ' | ||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 769 ![]() |
Messieurs dames,
soit une hiérarchie de catégories. Chaque catégorie peut avoir plusieurs parents et plusieurs enfants. Code :
Code :
select * from Category where id not in (select distinct(child_category_id) from CategoryHasCategory) Code :
Code :
Je vais provisoirement contourner le problème en construisant le tableau des ids des catégories filles et en le passant au addWhere en argument, ce qui élimine la requête imbriquée. Mais ce qui m'intéresserait serait plutôt de construire le DQL avec requête imbriquée pour que Doctrine le comprenne. |
||||||
|
|
00
|
|
|
#2 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
As-tu regardé du côté de Doctrine_RawSql ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#3 | ||
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 769 ![]() |
Hélas oui. Note que dans l'idéal, avec toutes les vertus que les concepteurs de Symfony et de Doctrine prêtent à leur produit, je m'attends plutôt à pouvoir utiliser le DQL fourni par cet ORM. Je déduis de ta question que ce n'est pas possible, donc ?
Côté RawSql, j'ai d'autres problèmes. Code :
Rien de grave bien sûr, je peux dédoublonner moi-même les résultats. Mais une fois de plus, j'ai l'impression que le couple Doctrine/Symfony rend compliquée une chose qui devrait être simple... |
||
|
|
00
|
|
|
#4 | |||
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 769 ![]() |
Ha oui, et puis j'ai aussi ça comme résultats dans mes traces :
Code :
Citation:
Comment faire pour qu'il effectue la requête demandée ? Ai-je raté quelque chose dans son paramétrage ? |
|||
|
|
00
|
|
|
#5 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Effectivement, doctrine 1 ne sait pas faire de requêtes imbriquées. C'est indiqué dans la documentation (mais où ? ! ), en tout cas, je l'y ai lu.
Il n'y a aucun paramétrages général qui permettraient de simplifier... Hélas. Le problème des requêtes imbriquées et de Doctrine, c'est la portabilité. En effet, l'objectif de Doctrine est de permettre à ton code de travailler sur n'importe quel moteur de base de données sans avoir à réécrire du code. Ce qui, dans certains cas, à une tendance gênante mais naturel à compliquer largement la situation. A priori, pour que les commandes sql passent bien dans doctrine elles doivent être en MAJUSCULE. Code :
$q->select('DISTINCT {c.child_category_id}')
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#6 | |
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 769 ![]() |
Citation:
Pour le raw sql, j'ai essayé avec des majuscules, des minuscules, des caractères cyrilliques, en dansant devant mon bureau, en ahanant des litanies mystiques, en string, en costard cravate, avec ou sans gants cloutés. Rien n'y fait. Je pense que c'est un complot.
|
|
|
|
00
|
|
|
#7 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Il n'y a pas contradiction avec ce que je dis. DQL ne supporte pas les sous requêtes, il faut les exprimer en SQL.
Après, il faudrait que je fasse des tests avec ton modèle et du temps, les deux me manquent, le deuxième cruellement...
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
Copyright © 2000-2012 - www.developpez.com