Buscar..
Uno a muchos, bidireccional
Este mapeo bidireccional requiere el mappedBy
atributo en el OneToMany
asociación y el inversedBy
atributo en el ManyToOne
asociación.
Una relación bidireccional tiene un lado propietario e inverso . OneToMany
relaciones OneToMany
pueden usar tablas de unión, por lo que debe especificar un lado propietario. La asociación OneToMany
es siempre el lado inverso de una asociación bidireccional.
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="users")
*/
class User
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="username", type="string", length=255)
*/
protected $username;
/**
* @var Group|null
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Group", inversedBy="users")
* @ORM\JoinColumn(name="group_id", referencedColumnName="id", nullable=true)
*/
protected $group;
/**
* @param string $username
* @param Group|null $group
*/
public function __construct($username, Group $group = null)
{
$this->username = $username;
$this->group = $group;
}
/**
* Set username
*
* @param string $username
*/
public function setUsername($username)
{
$this->username = $username;
}
/**
* Get username
*
* @return string
*/
public function getUsername()
{
return $this->username;
}
/**
* @param Group|null $group
*/
public function setGroup(Group $group = null)
{
if($this->group !== null) {
$this->group->removeUser($this);
}
if ($group !== null) {
$group->addUser($this);
}
$this->group = $group;
}
/**
* Get group
*
* @return Group|null
*/
public function getGroup()
{
return $this->group;
}
}
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity
* @ORM\Table(name="groups")
*/
class Group
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(name="name", type="string", length=255)
*/
protected $name;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\User", mappedBy="group")
*/
protected $users;
/**
* @param string $name
*/
public function __construct($name)
{
$this->name = $name;
$this->users = new ArrayCollection();
}
/**
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* @param string $name
*/
public function setName($name)
{
$this->name = $name;
}
public function addUser(User $user)
{
if (!$this->getUsers()->contains($user)) {
$this->getUsers()->add($user);
}
}
public function removeUser(User $user)
{
if ($this->getUsers()->contains($user)) {
$this->getUsers()->removeElement($user);
}
}
public function getUsers()
{
return $this->users;
}
public function __toString()
{
return (string) $this->getName();
}
}
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow