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 :

Criterion pour requete OR [Propel]


Sujet :

ORM PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2011
    Messages : 14
    Par défaut Criterion pour requete OR
    Bonjour,

    Voilà une demi journée que j'ai ce problème.

    Je souhaite arriver a une requete de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT h.iddemande
    FROM Historique h, Groupe g, UserGroupe ug
    WHERE h.userdemande = ug.user_id AND ug.group_id= g.id AND
    (
    g.work_et1 = h.idliste OR
    g.work_et2 = h.idliste OR
    g.work_et3 = h.idliste OR
    g.work_et4 = h.idliste OR
    h.iduser = 79
    );
    J'ai beau essayer avec les criterions, rien n'y fait, j'ai toujours un 'AND' sur le dernier...

    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
     
    $c = new Criteria();
    $c->setDistinct();
    $c->addSelectColumn(HistoriquePeer::IDDEMANDE);
    $c->addJoin(UserGroupPeer::USER_ID,HistoriquePeer::USER_DEMANDE);
    $c->addJoin(GroupPeer::ID, UserGroupPeer::GROUP_ID);
     
    $cton0= $c->getNewCriterion(HistoriquePeer::USER_DEMANDE, $id_user);
    $cton1 = $c->getNewCriterion(GroupPeer::WORK_ET1, HistoriquePeer::IDLISTE);
    $cton2 = $c->getNewCriterion(GroupPeer::WORK_ET2, HistoriquePeer::IDLISTE);
    $cton3 = $c->getNewCriterion(GroupPeer::WORK_ET3, HistoriquePeer::IDLISTE);
    $cton4 = $c->getNewCriterion(GroupPeer::WORK_ET4, HistoriquePeer::IDLISTE);
     
     
    $cton0->addOr($cton1);
    $cton0->addOr($cton2);
    $cton0->addOr($cton3);
    $cton0->addOr($cton4);
     
    $c->addOr($cton0);
     
    $demandes_id = HistoriquePeer::doSelect($c);
    Le problème se situe au moment de combiner les criterions entre eux...

    Cette solution me fait une requete tout bizarre. (avec remplacement de tout les HistoriquePeer::idliste par des valeurs => group.WORK_ET2=:p3 )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $cton0->addOr($cton1);
    $cton0->addOr($cton2);
    $cton0->addOr($cton3);
    $cton0->addOr($cton4);
     
    $c->addOr($cton0);
    Celle-ci me fait un requete de ce genre :
    WHERE ((HISTORIQUE.USER_DEMANDE=79 OR group.WORK_ET1='HISTORIQUE.IDLISTE') OR group.WORK_ET2='HISTORIQUE.IDLISTE')
    AND (group.WORK_ET3='HISTORIQUE.IDLISTE' OR group.WORK_ET4='HISTORIQUE.IDLISTE')
    Et je ne veux pas de ce AND, mais que des OR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $cton0->addOr($cton1);
    $cton0->addOr($cton2);
    $c->addOr($cton0);
     
    $cton3->addOr($cton4);
     
    $c->addOr($cton3);
    En vous remerciant par avance de vos éclaircissements sur ces satanés criterion.

  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
    Cela fait un bon bout de temps que je n'ai plus joué avec propel.

    Mais il me semblerais bien que tes objets : $cton1, $cton2, ... sont un seul et même objet.

  3. #3
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2011
    Messages : 14
    Par défaut
    D'après http://propel.jondh.me.uk/

    Je devrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $crit0->addOr($crit1);
    $crit0->addOr($crit2);
    $crit0->addOr($crit3);
     
    $c->add($crit0);
    J'ai essayé et ca ne marchais pas et je me suis rendue compte que c'était mon selectColum qui faisait tout foirer...

    Je ne parsais pas correctement le résultat qu'il me renvoyais.

    Citation Envoyé par Michel Rotta Voir le message
    Mais il me semblerais bien que tes objets : $cton1, $cton2, ... sont un seul et même objet.
    Ah ? Qu'entends-tu par là exactement...

  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
    Ah ? Qu'entends-tu par là exactement...
    A la relecture du code et d'un brin de doc propel : "que j'aurais mieux fait de tourner le clavier 7 fois autour de ma tête avant d'écrire" (ce qui n'est réalisable qu'avec des claviers sans fils)

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

Discussions similaires

  1. [OGS ?] Demande d'aide pour requete SQL
    Par hamtary dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/03/2006, 12h58
  2. inner join pour requete update ne marche pas
    Par Garra dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/01/2006, 13h14
  3. Aide Pour Requete SQL Simple ... Merci d'avance :)
    Par thefutureisnow dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/12/2005, 11h39
  4. aide pour requete sur 2 tables avec clé étranere
    Par richton95 dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/12/2005, 13h32
  5. [SQL] aide pour requete UPDATE SVP
    Par ganok dans le forum Langage SQL
    Réponses: 9
    Dernier message: 10/03/2005, 09h17

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