Passer les variables à la DQL
franckyaz
-
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?
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
-
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); } -
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 -
c est bon j ai mis 2 %s mais dans la fonction sprintf je n ai pas passé la deuxieme valeur.