与 DQL 查询的多对多关系
ManyToMany relation with DQL query
在我的网站上,我有 Users 和 Formations。我希望用户可以将编队添加到他们的收藏夹中。所以我对我的用户做了 ManyToMany 关系:
/**
* Many User have Many Phonenumbers.
* @ManyToMany(targetEntity="Formation")
* @JoinTable(name="users_favorites",
* joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="formation_id", referencedColumnName="id", unique=true)}
* )
*/
private $favorites;
它在我的 BDD 中创建了 users_favorites,其中包含用户 ID 和编队。现在我正在尝试对此进行查询,我想获得所有将此编队添加到他们的收藏夹的用户的编队。这是我尝试过的:
public function findAllWithFormation(){
return $this->createQueryBuilder('formation')
->leftJoin('formation.favorites', 'user')
->addSelect('formation')
->addSelect('user')
->getQuery()
->getOneOrNullResult()
;
}
但是我得到这个错误:
[Semantical Error] line 0, col 100 near 'user': Error: Class App\Entity\Formation has no association named favorites
我不知道如何使用 user_favorites table 使其工作。谢谢
我建议在您的实体中添加名称注释。
@ORM\Table(name="formation")
这样查询构建就会知道您指的是哪个实体。
希望这对您有所帮助,注意安全。
在我的网站上,我有 Users 和 Formations。我希望用户可以将编队添加到他们的收藏夹中。所以我对我的用户做了 ManyToMany 关系:
/**
* Many User have Many Phonenumbers.
* @ManyToMany(targetEntity="Formation")
* @JoinTable(name="users_favorites",
* joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="formation_id", referencedColumnName="id", unique=true)}
* )
*/
private $favorites;
它在我的 BDD 中创建了 users_favorites,其中包含用户 ID 和编队。现在我正在尝试对此进行查询,我想获得所有将此编队添加到他们的收藏夹的用户的编队。这是我尝试过的:
public function findAllWithFormation(){
return $this->createQueryBuilder('formation')
->leftJoin('formation.favorites', 'user')
->addSelect('formation')
->addSelect('user')
->getQuery()
->getOneOrNullResult()
;
}
但是我得到这个错误:
[Semantical Error] line 0, col 100 near 'user': Error: Class App\Entity\Formation has no association named favorites
我不知道如何使用 user_favorites table 使其工作。谢谢
我建议在您的实体中添加名称注释。
@ORM\Table(name="formation")
这样查询构建就会知道您指的是哪个实体。
希望这对您有所帮助,注意安全。