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

ORM PHP Discussion :

Doctrine : requêtes "conditionnelles"


Sujet :

ORM PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 260
    Par défaut Doctrine : requêtes "conditionnelles"
    Bonjour, Dans mon fichier moduleTable.class.php, je souhaite exécuter la requête de sélection B si la requête A ne retourne aucun résultat. Comment puis-je imbriquer les requêtes ?

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    La tu exagères un peu, non ?

    Dans ton modèle matableTable.class.php
    Tu crées une méthode pour récupérer les données (doMesDonnee).
    Tu fais ta première requête en DQL sans l'exécuter.
    Tu utilises un count() sur ce DQL pour avoir le nombre d'enregistrement, s'il est supérieur à zéro, tu fais un exécute dessus que tu retournes.
    Et s'il est à zéro, tu crées ton deuxième DQL que tu exécutes et tu retournes.


    J'ai juste un doute sur les performances au niveau de l'intérêt du count plutôt que d'exécuter le premier DQL et de voir s'il est vide. Il faudra voir s'il risque souvent d'être vide, si non, il sera peut-être plus intéressant de faire la requête et de vérifier s'il y a un retour. Tous dépend de ton appli, il n'y a que toi qui peut voir et faire des essais.

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 260
    Par défaut
    J'ai fait ceci:
    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
     
    public function getMostPopular()
    {
    	$q = $this->createQuery('p')
    		->where('p.rank != ?', '')
    		->limit(sfConfig::get('app_max_homepage_recent'))
    		->orderBy('p.rank DESC');
    	if(count($q)<3)
    	{
    		$q = $this->createQuery('p')
    		->where('p.selfrank != ?', '')
    		->limit(sfConfig::get('app_max_homepage_popular_programmes'))
    		->orderBy('p.selfrank DESC');
    	}
    	return $q->execute();
    }
    Ça n'a pas généré d'erreur, je suppose donc que ça marche, car d'après mes fixtures et le résultat retourné, c'est la deuxième requête qui a été exécutée.

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Ceci
    me semble faux, et il est possible que tes fixatures et ce code te retourne ce que tu a envie de voir, essaye de faire s'afficher la première requête... pour voir. Marche pas ! c'est bien ce que je craignais, il y avait 50% de chance que ton unique essai fonctionne.

    Je te proposerais plutôt comme code pour le if
    qui, là, va faire la requête en sql et vérifier dans la table.

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 260
    Par défaut
    Ok, je prends. Merci beaucoup

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

Discussions similaires

  1. [MySQL] Insérer résultat d'une requête : problème de quote
    Par maxime17s dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/12/2008, 03h42

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