我有许多对用户和组之间的关系,但是当我想访问用户的所有组时,我会得到空集合。学说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表来存储它们的关系。
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;
}
}
对于从数据库恢复数据我使用的代码:
$oUser = $this->getDoctrine()
->getRepository('LoginBundle:User')
->find(2);
$aGroup = $oUser->getGroups();
可惜的是$ aGroup集合包含0个元素的阵列,而在数据库是被匹配的记录。我在映射中缺少什么?
可能你的意思是公共职能。我已经将这个函数添加到两个类中,但仍然是集合是空的。 – Beacze