requête vers un objet

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonsoir,

J'ai écris une requête me retournant des résultats calculé (SUM), jusque là pas de problème.
Je souhaiterai exporté ces résultat dans une classe existante TotauxQuotidien.

Une première solution serai de le faire manuellement $totaux->setTotal($queryResult->getTotal()) mais je trouve sa très… moche ^^

Existe t'il une méthode pour expliquer à doctrine d'exporter les résultat d'une requête construite de toute pièce vers un objet défini ?

Merci d'avance.
Cordialement, La source.

+0 -0

Si j'ai bien compris, tu veux update la valeur dès qu'elle est recalculée ? Regarde du côté du design pattern observer, je pense qu'il fera ton bonheur. ;)

Édité par mehdidou99

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+0 -0

Salut !

J'ai souvent eu ce genre de problème, et il me semble que les requêtes natives permettent ce genre de choses — je dis me semble parce que je n'ai encore jamais mis cette solution en pratique.

Édité par Ymox

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0

Bonjour,

Je peux savoir en quoi set ta valeur manuellement en fait quelque chose de moche ? C'est justement la solution la plus simple et au moins c'est bien toi qui a la main sur ton objet.

Le pattern observer pourrait être une solution oui, mais ça serait se compliquer pour rien. A la limite si tu ne veux pas set ton objet dans le répo pour ne pas le passer en paramètre, tu créer un service Manager ou tu fais une fonction qui te fait et l'appel au repo + le set sur ton objet.

Tu peux aussi simplement set ta valeur directement dans la fonction qui calcule la nouvelle valeur, mais ça ajoute un couplage entre tes classes. A propos, si ta fonction setTotal ne fait aucune vérification, autant passer ton membre total en visibilité publique.

Plus on apprend, et, euh… Plus on apprend. | Coliru, parfait pour tester ses codes sources !

+0 -0
Auteur du sujet

J'espérai simplement pouvoir dire à doctrine de mapper le résultat automatiquement sur un objet tout comme on peu le faire avec PDO. Malheureusement si c'est super simple à faire avec PDO malheureusement cela demande beaucoup d'efforts pour arriver au résultat souhaité. Finalement la solution c'est bien de copier mes 12 colonnes manuellement :(

+0 -0

Cette réponse a aidé l'auteur du sujet

Salut La source,

Tu peux utiliser la syntaxe SELECT NEW de Doctrine pour obtenir le résultat que tu souhaites. Voici le lien vers la documentation permettant de faire cela.

Extrait de code de la documentation :

1
2
3
<?php
$query = $em->createQuery('SELECT NEW CustomerDTO(c.name, e.email, a.city) FROM Customer c JOIN c.email e JOIN c.address a');
$users = $query->getResult(); // array of CustomerDTO

Cordialement.

Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte