我尝试在Symfony 2

时间:2016-12-20 22:16:13

标签: symfony doctrine

我想在一个组和一个用户之间使用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表。

有人可以帮助我吗?

1 个答案:

答案 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_idgroupe_idclient_groupe表的字段。使用doctrine命令生成Getter和setter,并使用bin/console doctrine:schema:update --force命令更新数据库。