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 :

Première requête doctrine


Sujet :

ORM PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Novembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 11
    Par défaut Première requête doctrine
    Bonjour,

    Voilà mon problème est simple. Je commence mon premier site en doctrine et hop direct problème avec une requête.
    $q = Doctrine_Query::create()
    ->from('membre')
    ->where('membre_id = ?',$id);
    $A = $q->execute();

    Cette requête d'une complexité étonnante ne fonctionne pas. Elle me génère cette requête dans les log...
    SELECT * FROM membre WHERE (a.membre_id = ?) - (1)

    Et si je met plutôt cette requête:
    $q = Doctrine_Query::create()
    ->from('membre')
    ->where('membre_id = '.$id);
    $A = $q->execute();

    J'obtient :
    SELECT * FROM membre WHERE (a.membre_id = 1) - ()

    Comment je fait pour supprimer ces parenthèses à la fin? et obtenir juste :
    SELECT * FROM membre WHERE (a.membre_id = 1)

    En espérant que quelqu'un puisse me répondre.

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Par défaut
    Bonsoir,
    Essayez juste de rajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $q = Doctrine_Query::create()
    ->from('membre m')
    ->where('m.membre_id = ?',$id); // ou alors ->where('m.id = ?', $id);
    $A = $q->execute();
    N'ayant pas votre message d'erreur je rajouterais : attention à la casse sur le nom des tables, votre model n'est pas plutôt Membres?

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 11
    Par défaut
    Bonjour,

    Merci pour d'avoir répondu mais j'ai en fait trouvé le problème.
    En fait pensant que l'erreur venait de ma requête étant ma première en doctrine j'ai directement regardé dans le log et en fait le log n'affiche pas vraiment la requête qui est exécuté ensuite en base......
    Je me suis donc focalisé sur ce problème alors que l'erreur n'était pas du tout sur la requête mais plutôt que j'essayé de récupérer l'id d'un objet juste après alors que même si il n'y avait forcement qu'un objet, l'exécution de cette requête me retourné une collection d'objets........
    Erreur produite en Ajax donc aucune réelle explication......

    Finalement j'ai changé cette requête qui n'avait que pour but de récupérer l'objet selon un id par :
    Doctrine::getTable('membre')->find($id);

    Du coup effectivement plus besoin d'implémenter la collection pour un seul objet.

    Si d'ailleurs quelqu'un connais un petit doc sur les différentes fonctions de doctrine je suis preneur.

    Merci bien.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 89
    Par défaut
    Salut ,

    Voilà une doc http://www.doctrine-project.org/documentation/api/1_2

    J'ai une question,

    J'ai fait une requête avec doctrine:
    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
     
    public function getFirstMedaille_Finition()
    {
    	$req = $this->createQuery('m')
        				  	->select('NumMedaille')
        				  	->from('TMedaille m, TTraitement t, TSoudure s')
        				  	->where('t.TSoudure_NumSoudure = s.NumSoudure')
    					->andWhere('s.TMedaille_NumMedaille = m.NumMedaille')
    					->andWhere('t.DateTraitement = (	SELECT MIN(DateTraitement) 
    													FROM TTraitement tr 
    													WHERE tr.TType2traitement_NumType = 7)')
    					->andWhere('t.HeureTraitement = (	SELECT MIN(HeureTraitement) 
    													FROM TTraitement trait 
    													WHERE trait.DateTraitement = t.DateTraitement
    													AND trait.TType2traitement_NumType = 7 )');
     
        	return $req->fetchOne();
    }
    Elle est bonne et me renvoie exactement ce que je veux. Ou presque...
    Elle me le renvoie sous forme de Doctrine Record je crois. Hors je m'en sers après pour faire une requête (qui est toujours en SQL pour le moment).

    Je dios vérifier si mes données sont bien des numériques pour faire ma requête. Et forcément, là, ça coince...
    Comment je peux faire pour avoir un entier à la place du Doctrine Record qu'il me renvoie?

    Merci d'avance pour votre aide !

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

Discussions similaires

  1. Réutilisation d'un Statement après la première requète
    Par JeanNoel53 dans le forum InterBase
    Réponses: 6
    Dernier message: 15/06/2010, 20h26
  2. Réponses: 3
    Dernier message: 08/06/2010, 11h16
  3. Lire les résultats d'une requête Doctrine
    Par Vince57 dans le forum ORM
    Réponses: 5
    Dernier message: 18/05/2010, 15h47
  4. Réponses: 4
    Dernier message: 25/02/2009, 14h22
  5. Réponses: 3
    Dernier message: 19/05/2008, 10h36

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