2
3個表之間一對多的關係選擇字段我有用戶實體:許多在教義和ZF2與查詢生成器
class User{
...
/**
* @var Module $modules
* @ORM\ManyToMany(targetEntity="Adm\Entity\Module", inversedBy="users", cascade={"persist"})
* @ORM\JoinTable(
* name="user_module",
* joinColumns={@ORM\JoinColumn(name="module_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}
*)
*/
protected $modules;
public function __construct() {
$this->modules = new \Doctrine\Common\Collections\ArrayCollection();
}
...
}
和模塊實體:
class Module{
...
/**
* @ORM\ManyToMany(targetEntity="Adm\Entity\User", mappedBy="modules")
*/
protected $users;
...
}
我有三個表:用戶,模塊和user_module(用戶和模塊之間的關係,沒有額外的字段)。 我試圖建立一個查詢來獲取用戶(用於$ id)和模塊相關的他,這些關係是在user_module表中。這是我做過什麼:
public function getUser($id){
$qb = $this->getEm()->createQueryBuilder()
->select('u', 'm')
->from('Adm\Entity\User', 'u')
->join('u.modules', 'm')
->where('u.id = ?1')
->setParameter(1, $id)
->setMaxResults(1);
$result = $qb->getQuery()->getResult(\Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY);
return $result;
}
但不與用戶,它只是把從模塊表,它具有相同的ID用戶1倍的結果使相關模塊。 請幫我建立這個查詢。謝謝!
嘗試取出 - > setMaxResults(1) – Garry
由於@Garry,去除該線和也我被反轉連接列註釋: '* joinColumns = {@ ORM \ JoinColumn(名稱= 「模塊id」,referencedColumnName =」 id =「 * inverseJoinColumns = {@ ORM \ JoinColumn(name =」user_id「,referencedColumnName =」id「)}' 它必須是這樣: '* joinColumns = {@ ORM \ JoinColumn(name = 「user_id」,referencedColumnName =「id」)}, * inverseJoinColumns = {@ ORM \ JoinColumn(name =「module_id」,referencedColumnName =「id」)} –