Symfony 2 : [Semantical Error] The annotation « @ManyToMany » in property … was never imported.

Si jamais un jour, vous tentez de déclarer à la main une relation de type OneToOne, OneToMany ou ManyToMany et que vous avez une erreur de ce genre :

[Semantical Error] The annotation "@ManyToMany" in property MaSociete\PersoBundle\Entity\MaClasse::$proprietes was never imported. Did you maybe forget to add a "use" statement for this annotation?

Alors vous vous êtes sûrement aidé, comme moi, de la documentation officielle qui donne ces exemples, que je copie colle ici :

<?php
/** @Entity **/
class User
{
    // ...

    /**
     * @ManyToMany(targetEntity="Group", inversedBy="users")
     * @JoinTable(name="users_groups")
     **/
    private $groups;

    public function __construct() {
        $this->groups = new \Doctrine\Common\Collections\ArrayCollection();
    }

    // ...
}

/** @Entity **/
class Group
{
    // ...
    /**
     * @ManyToMany(targetEntity="User", mappedBy="groups")
     **/
    private $users;

    public function __construct() {
        $this->users = new \Doctrine\Common\Collections\ArrayCollection();
    }

    // ...
}

Si cela ne fonctionne pas et que vous avez cette erreur :

[Semantical Error] The annotation "@ManyToMany" in property MaSociete\PersoBundle\Entity\MaClasse::$proprietes was never imported. Did you maybe forget to add a "use" statement for this annotation?

Alors c’est qu’il suffit simplement d’ajouter le mot ORM\.

Ainsi mon code qui ne fonctionnait pas :

<?php
/**
 * @ManyToMany(targetEntity="Partenaire", inversedBy="personnes")
 * @JoinTable(name="personne_partenaire")
 **/
?>

Et le code qui fonctionne :

<?php
/**
 * @ORM\ManyToMany(targetEntity="Partenaire", inversedBy="personnes")
 * @ORM\JoinTable(name="personne_partenaire")
 **/
?>

9 comments

  1. daYmo dit :

    M E R C I !!!!
    J’avais en effet pris le code de la relation sur le site de doctrine et n’avais pas remarqué que dans mon code sur symfony j’utilisais évidement le ORM !!!!!
    Cool de partager

  2. Chocheu dit :

    Explication simple et efficace!
    Merci beaucoup! 🙂

  3. thxbro dit :

    Ce poste sauve la vie de beaucoup de gens je pense.. merci !

  4. Julien dit :

    Je connaissais la réponse, mais je me fais avoir régulièrement. Merci pour le temps gagné 😉

  5. Lebo dit :

    Thank you so much. Appreciated. I didn’t even pick up that this was the issue. You saved me so much time.

  6. ChiroKuro dit :

    Ah bah merci ! même en 2018, ce post m’a fait économiser des heures de tapage de tête contre les murs…

  7. bert dit :

    Ami Français, tu viens de sauver ma nuit de Belge !

Répondre à Julien Annuler la réponse.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.