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 :

Aide transformation requête SQL avec doctrine


Sujet :

ORM PHP

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 96
    Par défaut Aide transformation requête SQL avec doctrine
    Bonjour,

    voici mon schema:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Article_Installe
       column:
          remplace_id:
             type: integer
       relations:
          ArticleInstalle:
             local: remplace_id
             foreign: id
             type: one
             alias: articleRemplace
    Cela me permet de savoir pour un article donnée, s'il en remplace un autre ou si c'est une pièce d'origine.

    J'aimerai exécuter cette requête pour avoir la liste des articlesinstallés, je dois donc prendre tous les articles, et enlever les articles qui ont leur identifiant dans remplace_id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id
    from article_installe
    where id not in (
    SELECT remplace_id from article_installe where remplace_id is not null)
    J'aimerais avoir l'équivalent avec une exécution doctrine. Je ne sais pas comment gérer le not in.

    Merci d'avance

  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 documentation de Doctrine sur les subquery

    C'est pas en français, mais vu que carrément doctrine ne sais pas vraiment le faire, le code donné en exemple suffit à comprendre.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 96
    Par défaut
    Finalement, j'ai triché un peu.

    1/ J'ai fait une requête qui me récuère les champs remplace_id et donc d'avoir la liste des identifiant remplacé avec un fetchArray().

    2/ Ensuite j'ai parcouru cette liste pour la mettre dans un tableau

    3/ J'ai utilisé andWhereNotIn('id', $monTableau)

    J'ai donc mes objets qui correspondent au article n'ayant jamais été remplacé.

  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
    heu...

    Le fetcharray te retourne déjà un tableau, pourquoi le réécrire ?

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 96
    Par défaut
    ben il retourne un tableau sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Array => {
                    0 => Array => {
                                         remplace_id: valeur1
                                         }
                    1 => Array => {
                                         remplace_id: valeur2
                                         }
                 }
    Alors que ce qu'il faut c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Array => {
                   0 => valeur1
                   1 => valeur2
                 }

  6. #6
    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
    Autant pour moi, j'ai été un peu vite dans mes conclusions et confondu fetcharray et l'hydratation des données. Je pense que tu y trouveras ton bonheur.

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 96
    Par défaut
    Ok merci du lien, je vais voir ça et je mettrai un nouveau poste si je change de solution.

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 96
    Par défaut
    Effectivement grâce à mimi, il y a une petite astuce plus simple.

    Pour récupérer un tableau possédant les valeurs et non une "table de hashage" :

    Remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $tab = $q->fetchArray();
    qui vous donne :
     
    Array => {
                    0 => Array => {
                                         remplace_id: valeur1
                                         }
                    1 => Array => {
                                         remplace_id: valeur2
                                         }
                 }
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $tab $q->fetchOne(array(), Doctrine_Core::HYDRATE_SINGLE_SCALAR);
    qui vous donne :
    Array => {
                   0 => valeur1
                   1 => valeur2
                 }
    Vous pourrez ainsi faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($tab as $value){
     echo "Voici ma valeur :".$value;
    }

  9. #9
    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
    Heu

    Pour le code, je dénie toute responsabilité, je me suis juste contenté d'expliquer la commande à utiliser...

    Bonne chance,
    Michel

  10. #10
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 96
    Par défaut
    Ben j'ai pas dit que tu étais responsable du code, ne t'inquiète pas. Si une erreur survient, ce sera de ma faute :p

    merci encore

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

Discussions similaires

  1. Requête SQL avec une réponse unique
    Par Glutinus dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/07/2005, 16h35
  2. Problème de requête SQL avec instruction TRANSFORM
    Par Nosper dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/06/2005, 16h15
  3. Aide sur Requête SQL
    Par devdev dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/05/2005, 12h33
  4. requête SQL avec paramètre en vb avec base de donnée SQL srv
    Par dialydany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2005, 10h33
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

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