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

Doctrine2 PHP Discussion :

Problème avec un custom repository


Sujet :

Doctrine2 PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Points : 13
    Points
    13
    Par défaut Problème avec un custom repository
    Bonjour,

    J'ai créer un repository pour ma classe User, le probleme c'est que j'obtient une erreur :
    Undefined method 'getDoctrine'. The method name must start with either findBy or findOneBy!
    et voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //dans le controlleur
    $em = $this->getDoctrine()->getEntityManager();
     
    $exist = $em->getRepository('Fruityware\FrontendBundle\Entity\User');            
     
    var_dump($exist->isExist());
    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
     
    //le repository
    class UserRepository extends EntityRepository
    {
        public function isExist()
        {
            $repository = $this->getDoctrine()->getRepository('FruitywareFrontendBundle:User');
            $query = $repository->createQueryBuilder('u')
                                ->where('u.login = :login AND u.password = :password')
                                ->setParameters(array("login" => $form["login"]->getData(), "password" => $form["password"]->getData()))
                                 ->getQuery();
     
            $u = $query->getResult();
     
            if(count($u) > 0)
            {
                return true;
            }
     
            return false;
        }
    }
    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
     
    //et le cod yml
    Fruityware\FrontendBundle\Entity\User:
        type: entity
        table: User
        repositoryClass: Fruityware\FrontendBundle\Entity\Repository\UserRepository
        fields:
            id:
                type: integer
                id: true
                generator:
                    strategy: AUTO
            login:
                type: string
                length: 255
            password:
                type: string
                length: 255
        lifecycleCallbacks: {  }
    Merci de votre aide !

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

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

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Bonsoir,

    La ligne numéro 7 est en trop, tu appeles une méthode d'un controller qui étends la classe controler qui elle même étends containeraware et donc pas entityrepository.

    la méthode getDoctrine est le raccourci de $this->get('doctrine') ou get est une méthode de containerAware.

    ça, c'était le plus produit

    Donc dans un repository, tu dois écrire un $this qui fait référence à ton repository soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $query =         $this->createQueryBuilder('u')
                                ->where('u.login = :login AND u.password = :password')
                                ->setParameters(array("login" => $form["login"]->getData(), "password" => $form["password"]->getData()))
                                 ->getQuery();
     
            $u = $query->getResult();
     
            if(count($u) > 0)
            {
                return true;
            }
     
            return false;
        }
    Après je ne contrôles pas ta requête

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par stephan.78 Voir le message
    Bonsoir,

    La ligne numéro 7 est en trop, tu appeles une méthode d'un controller qui étends la classe controler qui elle même étends containeraware et donc pas entityrepository.

    la méthode getDoctrine est le raccourci de $this->get('doctrine') ou get est une méthode de containerAware.

    ça, c'était le plus produit

    Donc dans un repository, tu dois écrire un $this qui fait référence à ton repository soit :
    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
     
    $query =         $this->createQueryBuilder('u')
                                ->where('u.login = :login AND u.password = :password')
                                ->setParameters(array("login" => $form["login"]->getData(), "password" => $form["password"]->getData()))
                                 ->getQuery();
     
            $u = $query->getResult();
     
            if(count($u) > 0)
            {
                return true;
            }
     
            return false;
        }
    Après je ne contrôles pas ta requête
    Effectivement cela marche mieux, merci du coup de main stephan

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

Discussions similaires

  1. [VS] problèmes avec mon custom control
    Par dark poulpo dans le forum C#
    Réponses: 15
    Dernier message: 07/02/2012, 10h56
  2. Problème de rafraichissement avec un custom control Image
    Par choas dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 16/10/2008, 15h41
  3. Problème avec list.Contains() d'une liste custom
    Par Poussy-Puce dans le forum C#
    Réponses: 1
    Dernier message: 15/07/2008, 23h14
  4. Réponses: 1
    Dernier message: 25/06/2008, 10h09
  5. Problème avec un Custom component
    Par Mathieu.J dans le forum JSF
    Réponses: 5
    Dernier message: 28/05/2008, 14h04

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