Passer les variables à la DQL

franckyaz -  
 franckyaz -
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?

3 réponses

  1. Utilisateur anonyme
     
    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
  2. fr
     
    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
  3. franckyaz
     
    c est bon j ai mis 2 %s mais dans la fonction sprintf je n ai pas passé la deuxieme valeur.
    0