我有許多對用戶和組之間的關係,但是當我想訪問用戶的所有組時,我會得到空集合。學說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