The classes below illustrate a many to many bidirectional relation with Doctrine ORM, Symfony3 and FOSUserBundle.
Entity User
<?php // src/AppBundle/Entity/User.php namespace AppBundle\Entity; use FOS\UserBundle\Model\User as BaseUser; use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; /** * @ORM\Entity * @ORM\Table(name="fos_user") */ class User extends BaseUser { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @ORM\ManyToMany(targetEntity="UserGroup", inversedBy="users") * @ORM\JoinColumn(name="usergroup_id", referencedColumnName="id") */ private $usergroups; public function __construct() { parent::__construct(); $this->usergroups = new ArrayCollection(); } }
Entity UserGroup
<?php namespace AppBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; /** * UserGroup * * @ORM\Table(name="user_group") * @ORM\Entity(repositoryClass="AppBundle\Repository\UserGroupRepository") */ class UserGroup { /** * @var int * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @ORM\Column(name="name", type="string", length=255, unique=true) */ private $name; /** * @var string * * @ORM\Column(name="description", type="text", nullable=true) */ private $description; /** * @ORM\ManyToMany(targetEntity="User", mappedBy="usergroups") */ private $users; public function __construct() { $this->users = new ArrayCollection(); } /** * Get id * * @return int */ public function getId() { return $this->id; } /** * Set name * * @param string $name * * @return UserGroup */ public function setName($name) { $this->name = $name; return $this; } /** * Get name * * @return string */ public function getName() { return $this->name; } /** * Set description * * @param string $description * * @return UserGroup */ public function setDescription($description) { $this->description = $description; return $this; } /** * Get description * * @return string */ public function getDescription() { return $this->description; } }
Thanks !!