我想在一个组和一个用户之间使用Symfony 2在Doctrine中创建一个ManyToMany关系:许多用户可以在很多组中,许多组可以有很多用户。
然后在我的实体中,我这样做:
Groupe.php
/**
* Many Groups have Many clients.
* @ORM\ManyToMany(targetEntity="Utilisateurs\UtilisateursBundle\Entity\Client", mappedBy="groupe")
* @ORM\JoinTable(name="client_groupe")
*/
private $clients;
/**
* Get clients
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getClients()
{
return $this->clients;
}
Client.php
/**
* @ORM\ManyToMany(targetEntity="Ecommerce\EcommerceBundle\Entity\Groupe", inversedBy="clients")
* @ORM\JoinTable(name="client_groupe",
* joinColumns={@ORM\JoinColumn(name="client_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="groupe_id", referencedColumnName="id")}
* )
*/
private $groupe;
但是当我在我的实体getClients()
上调用$groupe
函数时,发生以下错误:
FROM client t0 WHERE client_groupe.groupe_id = ?' with params ["2"]:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'client_groupe.groupe_id' in 'where clause'
它不会在from子句中添加client_groupe
表。
有人可以帮助我吗?
答案 0 :(得分:1)
无需在from子句中添加client_groupe
表。从* @ORM\JoinTable(name="client_groupe")
中删除Groupe.php
后尝试。请查看以下ManyToMany
关系场景的工作示例。
<强> Groupe.php 强>
/**
* Many Groups have Many clients
* @ORM\ManyToMany(targetEntity="Utilisateurs\UtilisateursBundle\Entity\Client", mappedBy="groupe")
*/
private $clients;
<强> Client.php 强>
/**
* @ORM\ManyToMany(targetEntity="Ecommerce\EcommerceBundle\Entity\Groupe", inversedBy="clients")
* @ORM\JoinTable(name="client_groupe",
* joinColumns={@ORM\JoinColumn(name="client_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="groupe_id", referencedColumnName="id")}
* )
*/
private $groupe;
client_id
和groupe_id
是client_groupe
表的字段。使用doctrine命令生成Getter和setter,并使用bin/console doctrine:schema:update --force
命令更新数据库。