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 says:

    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. pti-lu says:

    Merci tout plein

  3. Chocheu says:

    Explication simple et efficace!
    Merci beaucoup! 🙂

  4. thxbro says:

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

  5. Julien says:

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

  6. Lebo says:

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

  7. ChiroKuro says:

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

  8. bert says:

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

Leave a Reply

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>

This site uses Akismet to reduce spam. Learn how your comment data is processed.