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 :

Comment ajoute-t-on une méthode dans un repository ?


Sujet :

Doctrine2 PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut Comment ajoute-t-on une méthode dans un repository ?
    Bonsoir, comment ajoute t'on un méthode dans une classe repository?

    j'ai essayer de faire un test simple:
    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
     
    <?php
     
    namespace Kod\CatalogueBundle\Entity;
     
    use Doctrine\ORM\EntityRepository;
     
    /**
     * ArticleRepository
     *
     * This class was generated by the Doctrine ORM. Add your own custom
     * repository methods below.
     */
    class ArticleRepository extends EntityRepository {
     
        public function test()
        {
            echo "je suis un test";
        }
     
    }
    j'essaye d'appeller la méthode test()

    voici mon controller:
    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
     
    <?php
     
    namespace Kod\CatalogueBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Kod\CatalogueBundle\Entity\ArticleRepository;
    use Kod\CatalogueBundle\Entity\Article;
     
     
    class MoteurController extends Controller {
     
     
    public function rechercheArticleAction($article) {
     
     
        $repository = $this->getDoctrine()
                               ->getEntityManager()
                               ->getRepository('KodCatalogueBundle:Article')->test();
        // Reste de la méthode du contrôleur.
     
    }
     
     
    }
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    /**
     * Description of RechercheController
     *
     * @author keokod
     */
    ?>
    le controlleur me dit
    [code}
    Undefined method 'test'. The method name must start with either findBy or findOneBy!
    [/code]

    comment je dois m'y prendre pour afficher
    je suis un test ??

    je vous remercie d'avance pour la réponse

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Le message d'erreur est pourtant clair

    The method name must start with either findBy or findOneBy!
    Essai donc de renommer ta méthode findByTest()
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    Bonjour,

    Tu n'es probablement pas dans ton repository personalisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $repository = $this->getDoctrine()
                               ->getEntityManager()
                               ->getRepository('KodCatalogueBundle:Article');
    echo 'le repository est de classe '.get_class($repository);exit;
    il faut le configurer au niveau de ton entité

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut
    Merci de ton aide et pour l'astuce

    alors voici le résultat du test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    le repository est de classe Doctrine\ORM\EntityRepository
    comment je configure ça ?
    j'ai essayer de charger le repository mais cela ne suffit pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    namespace Kod\CatalogueBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
    use Kod\CatalogueBundle\Entity\Article;
    use Kod\CatalogueBundle\Entity\ArticleRepository;
     
    /**
     * Kod\CatalogueBundle\Entity\Article
     */
    class Article

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    si tu utilises les annotations, on configure la classe du repository de cette façon (inutile de mettre le use)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    namespace Kod\CatalogueBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
    * @ORM\Entity(repositoryClass="Kod\CatalogueBundle\Entity\ArticleRepository")
    **/
    class Article
    voir http://symfony.com/doc/2.0/book/doct...sitory-classes

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut
    j'ai donc ajouter l'annotation dans ma class Article

    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
     
    <?php
    namespace Kod\CatalogueBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * Kod\CatalogueBundle\Entity\Article
     * @ORM\Entity(repositoryClass="Kod\CatalogueBundle\Entity\ArticleRepository")
     */
    class Article
    {
        /**
         * @var integer $id
         */
        private $id;
    ensuite comme dit le tuto j'ai executer la commande pour générer les oublies getter et setter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    php app/console doctrine:generate:entities Kod
    j'ai modifier mon Article repository

    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
     
    <?php
     
    namespace Kod\CatalogueBundle\Entity;
     
    use Doctrine\ORM\EntityRepository;
     
     
    /**
     * ArticleRepository
     * This class was generated by the Doctrine ORM. Add your own custom
     * repository methods below.
     */
    class ArticleRepository extends EntityRepository {
     
       public function findAllOrderedByName()
        {
           echo "test";
        }
     
    }
    voici mon controller

    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
     
    <?php
     
    namespace Kod\CatalogueBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Kod\CatalogueBundle\Entity\ArticleRepository;
    use Kod\CatalogueBundle\Entity\Article;
     
    class MoteurController extends Controller {
     
        public function rechercheArticleAction($article) {
     
     
                $em = $this->getDoctrine()->getEntityManager();
    $products = $em->getRepository('KodCatalogueBundle:Article')
                ->findAllOrderedByName();
     
        }
     
    }
    j'ai la même erreur
    j'ai aussi réessayer ton script de test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    le repository est de classe Doctrine\ORM\EntityRepository
    j'ai toujour le repository est de classe Doctrine\ORM\EntityRepository

    qu'est ce que j'ai bien pu loupé ?

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

Discussions similaires

  1. Comment ajouter par défaut une valeur dans un champ?
    Par zouloute dans le forum Access
    Réponses: 2
    Dernier message: 04/03/2008, 07h53
  2. Ajout d'une méthode dans une classe
    Par Flow_75 dans le forum C++
    Réponses: 6
    Dernier message: 12/02/2007, 10h42
  3. comment retrouver une méthode dans la javadoc?
    Par pracede2005 dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2006, 16h47
  4. "ajouter une méthode dans une méthode"
    Par Zorgloub dans le forum Langage
    Réponses: 1
    Dernier message: 09/04/2006, 12h53
  5. Réponses: 4
    Dernier message: 27/06/2005, 19h26

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