requête vers un objet

Le problème exposé dans ce sujet a été résolu.

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

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.

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

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.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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