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 :

Requete doctrine ne renvoie rien! [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par défaut Requete doctrine ne renvoie rien!
    Bonjour! Je suis bloquée depuis une semaine sur ce code. Au début j'ai cru que c'était le foreach qui marchait pas... Puis un éclair de génie m'est venu et j'ai un count(). Le count me renvoie 0 of course. Donc ma requete ne fonctionne pas.
    C'est le dernier truc que je dois faire pour mon projet! Je stresse!
    Merci à ceux qui peuvent m'aider... Je m'arrache les cheveux!

    En gros je dois comparer deux tables afin de mettre à jour la variable $etatValidation à 0 ou 1. J'en ai besoin pour un traitement que je fais dans la fenêtre qui affiche les données.

    Bien à vous.

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    <?php
     
    /**
     * SeriesVehiculeTable
     * 
     * This class has been auto-generated by the Doctrine ORM Framework
     */
    class SeriesVehiculeTable extends Ratp_Doctrine_Table
    {
        /**
         * Returns an instance of this class.
         *
         * @return object SeriesVehiculeTable
         */
        public static function getInstance()
        {
            return Doctrine_Core::getTable('SeriesVehicule');
        }
     
    	public function getAll($offset, $limit, array $filters = array(), array $sort = array(), array $params = array(), $query = null)
        {
    		$refFournisseur = $params['refFournisseur'];
    		$refOskar = $params['refOskar'];
    		$modele = $params['modele'];
    		$typeConstructeur = $params['typeConstructeur'];
    		$ajoutCommentaire = $params['ajoutCommentaire'];
     
    		$etatValidation = 'shit';
     
    		//comparer ici
    		//recuperer les effectivites validees
    		$tableEffectivitesValidees = Doctrine_Core::getTable('EffectivitesValidees');
    		$requete = $tableEffectivitesValidees->createQuery();
    		$requete->select('serie');
    		$requete->where('modele = ?', array($modele));
    		$requete->andWhere('typeConstructeur = ?', array($typeConstructeur));
    		$requete->andWhere('numArticle = ? OR numArticle = ?', array($refFournisseur, $refOskar));
    		$req1res = $requete->execute(array(), Doctrine::HYDRATE_SCALAR); //count() retourne 0
     
    		//recuperer les series a comparer
    		$tableSeriesVehicule = Doctrine_Core::getTable('SeriesVehicule');
    		$requete2 = $tableSeriesVehicule->createQuery();
    		$requete2->select('serie');
    		$requete2->where('modele = ?', array($modele));
    		$requete2->andWhere('typeConstructeur = ?', array($typeConstructeur));
    		$req2res = $requete2->execute(array(), Doctrine::HYDRATE_SCALAR);; //count() retourne 0
     
    //		foreach($req2res as $serieVeh){
    //			foreach($req1res as $effVal){
    //				$serie = $serieVeh;
    //				$serieVal = $effVal;
    //				if($serie == $serieVal){
    //					$etatValidation = 1;
    //					//$query = $this->createQuery();
    //					//$query->addSelect('\'' . $etatValidation . '\' as etatValidation, \'' . $refFournisseur . '\' as refFournisseur, \'' . $refOskar . '\' as refOskar, \'' . $ajoutCommentaire . '\' as ajoutCommentaire, *'); 
    //					//$query->where('modele = ?', array($params['modele']));
    //					//return parent::getAll($offset, $limit, $filters, $sort, array(), $query);
    //				}
    //				else {
    //					$etatValidation = 0;
    //					//$query1 = $this->createQuery();
    //					//$query1->addSelect('\'' . $etatValidation . '\' as etatValidation, \'' . $refFournisseur . '\' as refFournisseur, \'' . $refOskar . '\' as refOskar, \'' . $ajoutCommentaire . '\' as ajoutCommentaire, *'); 
    //					//$query1->where('modele = ?', array($params['modele']));
    //					//return parent::getAll($offset, $limit, $filters, $sort, array(), $query1);
    //				}
    //			}
    //		}
     
    		//comparer ici
     
    		$query = $this->createQuery();
    		$query->addSelect('\'' . $req2res . '\' as etatValidation, \'' . $refFournisseur . '\' as refFournisseur, \'' . $refOskar . '\' as refOskar, \'' . $ajoutCommentaire . '\' as ajoutCommentaire, *'); 
    		//$query->addSelect('\'' . $refFournisseur . '\' as refFournisseur, \'' . $refOskar . '\' as refOskar, \'' . $ajoutCommentaire . '\' as ajoutCommentaire, *'); 
            $query->where('modele = ?', array($params['modele']));
     
    		return parent::getAll($offset, $limit, $filters, $sort, array(), $query);
        }
    }

  2. #2
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete->where('modele = ?', array($modele));
    et sq. : ça me parait suspect comme écriture.

    Soit tu as un scalaire et tu utilises where ou andWhere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete->where('modele = ?', $modele);
    Soit tu as un tableau et tu utilises whereIn ou andWhereIn :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete->whereIn('modele', $modele);

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par défaut
    J'ai enlevé le array (ça provenait d'un copier coller). Mais count() renvoie toujours 0... Il ne semble pas accéder aux données de la table! Je me demande si ce n'est pas une connerie de symfony parce qu'il a pas la visibilité sur ma table, ou un truc de fichier YAML ou je ne sais quoi encore...
    (je n'ai JAMAIS programmé sur symfony NI Extjs et on m'a confié ça, et dans cette boîte personne ne sait rien faire...)

  4. #4
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Citation Envoyé par analuiza Voir le message
    (je n'ai JAMAIS programmé sur symfony NI Extjs et on m'a confié ça, et dans cette boîte personne ne sait rien faire...)
    Vu la complexité de symfony, si tu ne connais pas le framework et qu'en interne ta boite n'a pas de ressources là-dessus, prévois 6 mois de formation

    Pour en revenir à ton problème : si la requête est exécutée et que le résultat est une liste vide, c'est qu'aucune ligne de la table ne correspond à tes conditions. Essaye de logger ta requête pour examiner ça de plus près. Ou de retrouver la requête dans la barre de debug si tu es en environnement 'dev'.

  5. #5
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par défaut
    Effectivement, cela fait 5 mois que je suis en stage et que mon tuteur m'engueule parce que c'est ma dernière semaine et que soit disant j'ai perdu trop de temps au début du stage pour me familiariser avec le framework! (on rêve là on est d'accord...) En plus il me reste 2 jours de stage et il veut que ça soit pret! (gros LOL) J'ai fait 80% du projet quand même mais y a beaucoup de choses qui m'échappent...
    Je ne suis pas en dev (le mec qui sait le faire, n'est pas dans mon service, qui plus est il est en vacances) donc je peux pas retrouver la requete...
    Je vais essayer de mettre à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete->where('modele = ?', $modele);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete->where('modele = 'LINE-S3');
    qui je sais qui doit me renvoyer respectivement 16 et 4 rows...

    Pour l'instant, count() renvoie 0...

    EDIT :
    Je viens de vérifier et ça me renvoie bien 16 lorsque je mets les paramètres en brut, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //recuperer les series a comparer
    		$tableSeriesVehicule = Doctrine_Core::getTable('SeriesVehicule');
    		$requete2 = $tableSeriesVehicule->createQuery();
    		$requete2->select('serie');
    		$requete2->where('modele = \'LINE-S3\' ');
    		$requete2->andWhere('typeConstructeur = \'78M 001\' ');
    		$req2res = $requete2->count();
    Donc c'est au niveau de la récupération de mes paramètres que ça foire.
    Pourtant, au début je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public function getAll($offset, $limit, array $filters = array(), array $sort = array(), array $params = array(), $query = null)
        {
    		$refFournisseur = $params['refFournisseur'];
    		$refOskar = $params['refOskar'];
    		$modele = $params['modele'];
    		$typeConstructeur = $params['typeConstructeur'];
    		$ajoutCommentaire = $params['ajoutCommentaire'];
    et plus loin, il n'y a pas de souci quand je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $query = $this->createQuery();
    $query->addSelect('\'' . $req2res . '\' as etatValidation, \'' . $refFournisseur . '\' as refFournisseur, \'' . $refOskar . '\' as refOskar, \'' . $ajoutCommentaire . '\' as ajoutCommentaire, *'); 
    $query->where('modele = ?', array($params['modele']));
     
    return parent::getAll($offset, $limit, $filters, $sort, array(), $query);
    Ah on y est presque! (Merci Herode quand même... t'es un chic type!)

  6. #6
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Citation Envoyé par analuiza Voir le message
    Je ne suis pas en dev (le mec qui sait le faire, n'est pas dans mon service, qui plus est il est en vacances) donc je peux pas retrouver la requete...
    Au pire tu dois pouvoir logger ta requête dans un fichier pour la lire, il suffit de mettre le degré de sévérité assez haut (alert ou error) pour que ça passe avec les réglages de production standard.

    Mais il n'y a aucune raison que tu ne puisses pas passer en environnement dev. Par défaut aussi, il devrait y avoir une url du type www.monappli.net/frontend_dev.php qui active l'environnement de dev. Faire du développement dans un environnement de prod (sans infos de debug et avec le cache), c'est tout de même moyennement confortable.

    Autre solution si tu as les outils (EDI) pour ça : tu branches un vrai déboggueur (XDebug le plus souvent) et tu traces ton code là où ça coince.

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

Discussions similaires

  1. Requete table liée ne renvoie rien
    Par KurtSilent dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/06/2013, 10h18
  2. Réponses: 2
    Dernier message: 14/04/2009, 09h35
  3. Réponses: 3
    Dernier message: 13/06/2007, 15h57
  4. Requete sql qui ne renvoie rien :-(
    Par patchouli dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/02/2007, 10h41
  5. [PostgreSql] requête simple qui ne renvoie rien ?
    Par tuxout dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/08/2006, 15h06

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