Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème annotation ORM

    20 janvier 2017 à 0:15:47

    Bonjour, 

    Débutant avec Symfony 2.8, je rencontre des problèmes lors de la génération de mes entités.

    ## YAML Template.
    ---
    sil02\VitrineBundle\Entity\LigneCommande:
        type: entity
        table: LigneCommande
        id:
            id:
                type: integer
                generator: { strategy: AUTO }
        fields:
            quantite:
                type: integer
            prix:
                type: decimal
                scale: 2
        manyToOne:
            commande:
                targetEntity: Commande
                inversedBy: ligneCommandes
                joinColum:
                    name: idCommande
                    referencedColumnName : id
            article:
                targetEntity: Article
                inversedBy: ligneCommandes
                joinColumn:
                    name: idArticle
                    referencedColumnName : id

    Voilà ce que j'obtiens après la génération :

    <?php
    
    namespace sil02\VitrineBundle\Entity;
    
    /**
     * LigneCommande
     */
    class LigneCommande
    {
        /**
         * @var integer
         */
        private $id;
    
        /**
         * @var integer
         */
        private $quantite;
    
        /**
         * @var string
         */
        private $prix;
    
        /**
         * @var \sil02\VitrineBundle\Entity\Commande
         */
        private $commande;
    
        /**
         * @var \sil02\VitrineBundle\Entity\Article
         */
        private $article;
    
    
        /**
         * Get id
         *
         * @return integer
         */
        public function getId()
        {
            return $this->id;
        }
    
        /**
         * Set quantite
         *
         * @param integer $quantite
         *
         * @return LigneCommande
         */
        public function setQuantite($quantite)
        {
            $this->quantite = $quantite;
    
            return $this;
        }
    
        /**
         * Get quantite
         *
         * @return integer
         */
        public function getQuantite()
        {
            return $this->quantite;
        }
    
        /**
         * Set prix
         *
         * @param string $prix
         *
         * @return LigneCommande
         */
        public function setPrix($prix)
        {
            $this->prix = $prix;
    
            return $this;
        }
    
        /**
         * Get prix
         *
         * @return string
         */
        public function getPrix()
        {
            return $this->prix;
        }
    
        /**
         * Set commande
         *
         * @param \sil02\VitrineBundle\Entity\Commande $commande
         *
         * @return LigneCommande
         */
        public function setCommande(\sil02\VitrineBundle\Entity\Commande $commande = null)
        {
            $this->commande = $commande;
    
            return $this;
        }
    
        /**
         * Get commande
         *
         * @return \sil02\VitrineBundle\Entity\Commande
         */
        public function getCommande()
        {
            return $this->commande;
        }
    
        /**
         * Set article
         *
         * @param \sil02\VitrineBundle\Entity\Article $article
         *
         * @return LigneCommande
         */
        public function setArticle(\sil02\VitrineBundle\Entity\Article $article = null)
        {
            $this->article = $article;
    
            return $this;
        }
    
        /**
         * Get article
         *
         * @return \sil02\VitrineBundle\Entity\Article
         */
        public function getArticle()
        {
            return $this->article;
        }
    }
    

    Bref, aucun signe d'ORM, ni même d'annotations.

    Veuillez m'excuser d'avance si je donne trop peu d'éléments. N'hésitez pas à me le dire dans les commentaires.

    Merci d'avance



    • Partager sur Facebook
    • Partager sur Twitter
      20 janvier 2017 à 8:44:33

      Salut !

      Tu as un mapping YAML, apparemment, ce qui va avoir précédence sur les éventuelles annotations (qui, du coup, sont inutiles). Cf. la FAQ Symfony.

      Tu peux continuer à conserver les mappings en YAML, ou convertir en annotations, comme tu préfères.

      • Partager sur Facebook
      • Partager sur Twitter
        20 janvier 2017 à 14:27:35

        Je vais continuer mais comment puis-je créer un repository ?
        • Partager sur Facebook
        • Partager sur Twitter
          20 janvier 2017 à 15:44:31

          Il suffit de créer ta classe, puis de renseigner comme ci-dessous (repris depuis la documentation officielle :

          sil02\VitrineBundle\Entity\LigneCommande:
              # …
              repositoryClass: sil02\VitrineBundle\Repository\LigneCommandeRepository
          

          En adaptant évidemment selon le namespace de ton repository.

          • Partager sur Facebook
          • Partager sur Twitter
            20 janvier 2017 à 22:19:18

            Justement, ceci ne me créé pas de répertoire repository ni de fichier. Je pensais que c'était du aux annotations mais finalement non.

            La classe se créé mais pas le repository.

            Je suppose que je ne dois pas créer le dossier à la main mais en passant par repositoryClass je n'ai rien.

            EDIT : J'ai pu résoudre mon problème avec cette commande :

            doctrine:generate:entities silXX --path=src/

            Enfaite j'avais un problème de path mais c'est tout bon avec cette commande.

            Je te remercie de ton aide. A bientot 

            -
            Edité par mathieuberard 20 janvier 2017 à 23:30:06

            • Partager sur Facebook
            • Partager sur Twitter

            Problème annotation ORM

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown