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 :

Doctrine_Query not found


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 163
    Par défaut Doctrine_Query not found
    Bonjour,

    J'ai lancé la requête suivante sur mon repository.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $q = Doctrine_Query::create()
                 ->update('Profile p')
                 ->where('p.email = ?', $user)
    		     -> set ('p.first_name',$first_name)
    			 -> set ('p.last_name',$last_name)
    			 -> set ('p.date_of_birth', $dateofbirth)
    			 -> set ('p.town', $town);
     
                 $number = $q->execute();
    Ensuite depuis mon contrôleur j'appelle la méthode pour faire l'update, et j'obtiens cette belle erreur qui me bloque:
    FatalErrorException: Error: Class 'Zero\UserBundle\Entity\Doctrine_Query' not found in C:\wamp\www\Symfony\src\Zero\UserBundle\Entity\ProfileRepository.php line 26

  2. #2
    Membre émérite
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Par défaut
    Bonjour,

    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $q = $this
                 ->createQueryBuilder()
                 ->update('Profile p')
                 ->where('p.email = ?', $user)
                 -> set ('p.first_name',$first_name)
    	     -> set ('p.last_name',$last_name)
    	     -> set ('p.date_of_birth', $dateofbirth)
    	     -> set ('p.town', $town);
     
                 $number = $q->execute();

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 163
    Par défaut
    Merci stephan.78 pour la réponse. J'ai essayé avec cette manière, voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	     $q = $this
                 ->_em->createQueryBuilder('p')
                 ->update('Profile p')
                 ->where('p.email = ?', $user)
                 -> set ('p.first_name',$first_name)
    	         -> set ('p.last_name',$last_name)
    	         -> set ('p.date_of_birth', $dateofbirth)
    	         -> set ('p.town', $town);
     
                 $number = $q->getQuery()->execute();
    Mais j'obtiens cette erreur

    [Semantical Error] line 0, col 7 near 'Profile p SET': Error: Class 'Profile' is not defined.
    Une idée, svp?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 60
    Par défaut
    Bonjour,

    Comme je vous l'ai dit il y a quelques jours, Symfony est sensible à la casse. Or la dernière fois, votre entité "profile" s'écrivait avec un "p" minuscule. Cela m'a l'air d'être toujours le cas.
    J'en profite donc pour vous réitérer mon conseil, lisez ce que l'on vous écrit et assimilez-le plutôt que d'attendre des réponses toutes crues. Vous avancerez beaucoup plus vite (en l'occurrence, vous n'auriez pas été bloqué par une bête histoire de casse).

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 163
    Par défaut
    Non mon entité s'appelle bien "Profile" sous le namesapce ZeroUserBundle: Profile

    Peut être, faute de frappe j'ai écris l'autre fois Profile avec "p", mais ce n'est pas un problème de casse

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 60
    Par défaut
    La dernière fois, vous avez écrit ceci :

    Zero\UserBundle\Entity\Profile object not found
    Donc, à moins que vous ayez modifié le nom de votre entité depuis, vous n'avez pas d'entité "Profile"; ce qui semble plutôt cohérent avec l'erreur que vous obtenez.

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 163
    Par défaut
    Pour être clair, j'ai rien changé, l'entité Profile existe toujours sous Zero\UserBundle\Entity\Profile.

    Au niveau du ProfileRepository, j'ai cette méthode:

    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 update_formulaire1($user,$first_name, $last_name, $dateofbirth, $town)
    	{
     
     
    		$q = $this
                 ->_em->createQueryBuilder('p')
                 ->update('ZeroUserBundle:Profile p')
                 -> set ('p.first_name', $first_name)
    	         -> set ('p.last_name',$last_name)
    	         -> set ('p.date_of_birth', $dateofbirth)
    	         -> set ('p.town', $town)
    			 ->where('p.email = ?', $user);
     
             $number = $q->getQuery()->execute();
     
    	}
    Ensuite je fais appel à la méthode dans le contrôleur,

    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
         public function formulaire1Action($user)
        {
     
     
    		$profile = new profile();
     
     
    		$form = $this->createForm(new ProfileType, $profile);
     
    		$request = $this->get('request');
     
    		if( $request->getMethod() == 'POST' )
            {
     
    			 $em = $this->getDoctrine()->getEntityManager();
    			 $profile_repository=$em->getRepository('ZeroUserBundle:Profile'); 
    			 $profile_repository->update_formulaire1($user, $form->getData('firstName'), $form->getData('lastName'), $form->getData('dateOfBirth'), $form->getData('town'));
    			 $em->flush();
     
                 return $this->redirect( $this->generateUrl('zeroprofil_formulaire2'));		 			
    		}
     
     
            return $this->render('ZeroProfilBundle:Profile:formulaire1.html.twig',array('form' => $form->createView(),));
        }
    Et j'obtiens l'erreur suivante,

    [Syntax Error] line 0, col 52: Error: Expected Literal, got ','

    [2/2] QueryException: [Syntax Error] line 0, col 52: Error: Expected Literal, got ','

    [1/2] QueryException: UPDATE ZeroUserBundlerofile p SET p.first_name = , p.last_name = , p.date_of_birth = , p.town = WHERE p.email = ? AND baza1555588@ho.fr
    PS: Je n'ai jamais attendu des réponses prêtes, je cherche partout et je lis, et je tente plusieurs solution, mais en partie j'essaye de m'aider selon l'expérience des gens sur ce forum

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 60
    Par défaut
    1° chose, vous écrivez $profile = new profile();, comprenez donc que je me pose des questions

    2° chose, entre vos deux posts, l'erreur n'est plus la même. Je veux bien admettre que l'informatique tombe de temps en temps en marche mais généralement une erreur ne disparait pas toute seule.

    3° chose, la nouvelle erreur que vous obtenez est particulièrement explicite et je pense qu'en lisant attentivement la requête une dizaine de secondes, il y a quelque chose qui doit vous sauter aux yeux et vous orienter vers l'origine du problème.

    Une fois que vous aurez vu cela, on pourra discuter du fait que vous n'avez absolument pas compris la façon dont fonctionne le traitement du formulaire et que de ce fait là, vous êtes entrain de construire une usine à gaz pour quelque chose de très simple. Et du coup, largement simplifier votre code et le leur par là même beaucoup plus maintenable.

  9. #9
    Membre émérite
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Par défaut
    Du calme et du sang froid,

    Juste pour savoir, qu'elle est le but de cette update ?

    Parceque au vu de ce que je vois, ça ne sera ressemble pas un update mais à une création d'un Profile non ?

    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
    public function update_formulaire1($user,$first_name, $last_name, $dateofbirth, $town)
    	{
     
     
    		$q = $this
    // pas besoin d'appeler l'entity manager, vous êtes déja dans le repository
    //             ->_em->createQueryBuilder('p')
                  ->createQueryBuilder('p')
    // pas la peine non plus d'appeler le namespace de Profile on est dedans
    //             ->update('ZeroUserBundle:Profile p')
                   ->update('p')
                   -> set ('p.first_name', $first_name)
    	         -> set ('p.last_name',$last_name)
    	         -> set ('p.date_of_birth', $dateofbirth)
    	         -> set ('p.town', $town)
    			 ->where('p.email = ?', $user);
     
             $number = $q->getQuery()->execute();
     
    	}
    Mais comme je dit au début, et comme on te l'a dit dans les posts précédents, ce n'est pas comme ça que l'on fait. Je n'ai jamais fait un update dans un repository, le repository est la pour t'aider à faire des requêtes spécifiques et plus fine que les findall et autres, pour récupérer une entité ou une collection d'entités.

    PS: pour info, et je suis d'accord avec frfrance31, chercher, apprendre avant de poster du code qui n'est pas cohérent. Depuis que j'ai commencé Symfony, Je n'ai posé qu'une seule question et j'y ai répondu moi même. Les réponses sont soit évidentes soit sur Internet, soit mieux dans le code de Symfony. Après pour les cas difficiles oui, c'est bien d'avoir du soutien sur un forum.

    PS2: Je ne suis pas développeur de métier, j'ai commencé à développer sous symfony 1.4 en 2011 ...

Discussions similaires

  1. Doctrine_Query not found
    Par hazem2410 dans le forum Doctrine2
    Réponses: 0
    Dernier message: 28/05/2013, 22h38
  2. [DOCTRINE] Doctrine_QUERY not found in
    Par anaon dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 09/12/2011, 15h31
  3. [1.x] Déploiement : " Class 'Doctrine_query' not found"
    Par oOZarkOo dans le forum Symfony
    Réponses: 12
    Dernier message: 09/12/2010, 11h54
  4. TXMLModule.create - name = resource not found
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 04/03/2003, 10h54
  5. Component not found
    Par Pm dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 14h40

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