Passer les variables à la DQL

Fermé
franckyaz - 5 août 2016 à 17:36
 franckyaz - 9 août 2016 à 11:13
bonjour.
j aimerais savoir s il est possible de construire une requette grace DQL où l'on passe le nom du champs comme une variable?
bref un truc semblable à ceci:

$appel = 'appelsEmis';
$query = $this->_em->createQuery('SELECT AVG( :appel) from table');
$query->setParameter('appel',$appel);

j aimerais afficher les resultats d'un seul champ de ma table ( et pas tous en meme temps). mais cette table a plus de 28 champ et j aimerais recuperer ces champs par un formulaire. quelqu'un peux m aider svp?
A voir également:

3 réponses

Utilisateur anonyme
6 août 2016 à 14:03
Salut,

oui tu peux, mais il est mieux de vérifier la valeur que modifie dynamiquement dans la requête, avec par exemple in_array().

exemple :

        $fields  = ['champ1', 'champs2', 'champs3'];
        $request = "SELECT AVG(%s) from table";
        if (in_array($field, $fields)) {
            $dql = sprintf($request, $field);
            $query = $this->_em->createQuery($dql);
        }
0
quand je met ceci:


$request = "SELECT a.startTime as startTime, MAX(a.%s) as %s FROM SoutenanceCamtelBundle:OutGoingMobile a" ;
$dql = sprintf($request, 'callAttempts');
$query = $this->_em->createQuery($dql);

j ai cette erreur ci :
Warning: sprintf(): Too few arguments in C:\wamp\www\erreur\src\Soutenance
0
c est bon j ai mis 2 %s mais dans la fonction sprintf je n ai pas passé la deuxieme valeur.
0