IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

CreateQueryBuilder avec des conditions [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 159
    Par défaut CreateQueryBuilder avec des conditions
    Bonjour,

    J'ai un problème très nul ! Depuis un formulaire de recherche, l'utilisateur peut sélectionner un nom utilisateur et/ou une spécialité. Je ne sais pas comment créer ma requête dans mon repository...

    Pour le moment je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    	function extraction($data)
    	{
     
    		$query = $this->CreateQueryBuilder('d');		
     
    		if($data['utilisateur'] != '')
    		{
    			$query->join('d.user', 'u')
    				->andwhere('u.id = :utilisateur')
    				->setParameters(array('utilisateur'=>$data['utilisateur']));
    		}		
     
    		if($data['specialite'] != "")
    		{
    			$query->join('d.specialite', 's')
    				->andWhere('d.specialite = :specialite')
    				->setParameters(array('specialite'=>$data['specialite']));
    		}		
     
    		return $query->getQuery()->getResult();
     
    	}
    Quand je laisse par exemple simplement une des deux conditions, c'est bon j'ai un résultat. Mais dans le cas ou les deux conditions sont remplis j'ai une erreur :
    Invalid parameter number: number of bound variables does not match number of tokens
    Help

    Merci à vous

  2. #2
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Salut,

    Commence par remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ->setParameters(array('utilisateur'=>$data['utilisateur']));
    ->setParameters(array('specialite'=>$data['specialite']));
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ->setParameter('utilisateur', $data['utilisateur']);
    ->setParameter('specialite', $data['specialite']);
    En utilisant la méthode setParameters() tu déclares la liste de tous les paramètres de la requête : si tu rentres dans les deux 'if' le deuxième écrase le premier et du coup il manque un paramètre à ta requête. D'où le message d'erreur.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 159
    Par défaut
    Merci, c'est top !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Paginate avec des conditions sur les clés etrangères.
    Par CeDRiC08 dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 03/07/2007, 09h49
  2. Réponses: 3
    Dernier message: 08/05/2007, 17h32
  3. Makefile avec des conditions
    Par meufeu dans le forum Linux
    Réponses: 2
    Dernier message: 04/08/2006, 11h46
  4. Réponses: 1
    Dernier message: 30/06/2006, 16h01
  5. [ASE][T-SQL] Appel d'une sous-proc avec des conditions
    Par metheorn dans le forum Sybase
    Réponses: 1
    Dernier message: 19/05/2006, 18h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo