|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : août 2006 Messages : 49 ![]() |
Bonjour,
J'aimerais faire un formulaire qui permette d'éditer un DoctrineObject ainsi que les DoctrineObject liés par une relation One-to-Many. Spontanément, je pense à embedRelation() parce que ça gère tout tout seul et que souvent la flemmardise est une bonne chose. Le hic, c'est que je voudrais ne récupérer qu'une partie des enregistrements liés, sur la base d'un WHERE sur un des champs. Et je trouve assez peu de détails concernant embedRelation() sur le net. Apparemment, on ne peut pas lui ajouter d'options. J'ai trouvé un exemple qui fait un ORDER BY directement sur le schéma Doctrine, mais rien pour le WHERE. Du coup, je me demandais s'il était possible de définir, pour le formulaire uniquement, un query sur la classe Doctrine (à la manière un peu de la surcharge de la requête de l'Admin Générator) ou éventuellement en utilisant un filtre (tout aussi peu documenté sur le net) ou par une autre méthode sioux... Sinon je devrais repartir de zéro en singeant le comportement de l'embedRelation, mais tout de suite ne pas utiliser les outils à disposition me paraît moins propre... |
|
|
00
|
|
|
#2 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Je ne suis pas sur ni de se que tu veux, ni du contexte.
Es-tu dans un formulaire d'administration ? Tu veux un formulaire qui va afficher des données d'une table A qui est liée à B en 1<->n. Tu veux tous les champs de A et seulement une partie de B. Est-ce cela ? Est-il rentable de t'embêter avec cela (même si c'est sémantiquement plus logique) ? Je veux dire par là, est ce que le gain en terme d'accès à la base et d'hydratation des objets va être rentable ? Si tu gagnes 0.02s en perf, je ne m'en occuperais même pas. Tu peux générer la requête que tu veux, si tu as désactivé les champs dans le form, tu ne dois pas avoir de problème, ni lors de l'affichage, ni lors de la modification. Mais es-ce rentable en terme de performance ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : août 2006 Messages : 49 ![]() |
Ah non, désolé j'ai pas été clair.
Je ne veux éditer qu'un enregistrement de A (peu importe les champs, ça sera géré par la classe form) et je veux pouvoir éditer dans le même formulaire une partie des enregistrements de B parmi ceux liés à l'enregistrement de A. Le comportement habituel de embedRelation, c'est de retourner, pour édition, tous les enregistrements de B liés à l'enregistrement courant de A. Et c'est juste ce comportement que je veux restreindre avec une requếte (type SELECT * FROM B WHERE B.tri = option_tri). Et je ne cherche pas (encore) à chipoter sur les performances mais à limiter le nombre de ligne tapées d'une part, et surtout à essayer d'exploiter au maximum le bel outil (embedRelation) que Symfony nous fournit. Et bien entendu, je ne suis pas dans un formulaire d'administration. |
|
|
00
|
|
|
#4 | ||||
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Alors, je ne vois pas le problème.
Tu fais ta requête sur les deux tables avec doctrine et un where en plus de la liaison normale. Code :
Dans le form, tu récupères les enregistrements de B par Code :
Ca devrait marcher.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
||||
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : août 2006 Messages : 49 ![]() |
Certes. C'était d'ailleurs mon idée de "repartir de zéro". J'avais juste dans l'idée d'en profiter pour en apprendre un peu plus sur embedRelation plutôt que le classique embedForm. Ceci dit, c'est vrai que je n'y gagnerais pas des masses (juste le plaisir de se donner un défi pour mieux connaître le framework
|
|
|
00
|
|
|
#6 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
A priori, l'utilisation n'est pas très différente, par habitude j'utilise l'embedForm.
La documentation me semble plutôt légère, si tu trouves, documentes ! Si non, tu as le plugin ahDoctrineEasyEmbeddedRelationsPlugin qui est très intéressant aussi.
__________________
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