나는 사용자와 그룹간에 많은 관계가 많지만 사용자를위한 모든 그룹에 액세스하려면 빈 모음을 가져야합니다.Doctrine 2 - ManyToMany 관계 - 비어있는 모음
namespace LoginBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity
* @ORM\Table(name="User")
*/
class User
{
/**
* @ORM\Column(type="integer", name="id")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $_iId;
/**
* @ORM\Column(type="string", name="login", length=45)
*/
private $_sLogin;
/**
* @ORM\ManyToMany(targetEntity="GroupBundle\Entity\Group", inversedBy="_aUser")
* @ORM\JoinTable(name="Group_x_User",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")}
* )
*/
private $_aGroup;
public function __construct() {
$this->_aGroup = new ArrayCollection();
}
/**
* Get iId
*
* @return integer
*/
public function getId()
{
return $this->_iId;
}
/**
* Set sLogin
*
* @param string $sLogin
*
* @return User
*/
public function setLogin($sLogin)
{
$this->_sLogin = $sLogin;
return $this;
}
/**
* Get sLogin
*
* @return string
*/
public function getLogin()
{
return $this->_sLogin;
}
public function getGroups()
{
return $this->_aGroup;
}
사용자 및 그룹은 관계를 저장하기 위해 Group_x_User 테이블을 사용합니다. 데이터베이스에 매칭되는 기록이있는 동안
$oUser = $this->getDoctrine()
->getRepository('LoginBundle:User')
->find(2);
$aGroup = $oUser->getGroups();
Unfortunatelly $ aGroup 컬렉션 0 요소들의 어레이를 포함 데이터베이스에서 데이터를 복원하는
namespace GroupBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity
* @ORM\Table(name="Group")
*/
class Group
{
/**
* @ORM\Column(type="integer", name="id")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $_iId;
/**
* @ORM\Column(type="string", name="name", length=45)
*/
private $_sName;
/**
* @ORM\ManyToMany(targetEntity="LoginBundle\Entity\User", mappedBy="_aGroup")
*/
private $_aUser;
public function __construct() {
$this->_aUser = new ArrayCollection();
}
/**
* Get iId
*
* @return integer
*/
public function getId()
{
return $this->_iId;
}
/**
* Set sName
*
* @param string $sName
*
* @return Group
*/
public function setName($sName)
{
$this->_sName = $sName;
return $this;
}
/**
* Get sName
*
* @return string
*/
public function getName()
{
return $this->_sName;
}
public function getUsers()
{
return $this->_aUser;
}
}
는 I 코드를 사용한다. 매핑에서 무엇을 놓치고 있습니까?
아마 당신은 공공의 기능을 의미했습니다. 두 클래스에이 함수를 추가했지만 여전히 컬렉션이 비어 있습니다. – Beacze