수색…
일대 다수, 양방향
이 양방향 매핑은 필요 mappedBy
상의 속성 OneToMany
관계와 inversedBy
상의 속성 ManyToOne
연결을.
양방향 관계는 소유자와 반대면 모두 를가 집니다. OneToMany
관계는 조인 테이블을 사용할 수 있으므로 소유 측면을 지정해야합니다. OneToMany
연관은 항상 양방향 연관의 반대면입니다.
<?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
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow