与 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")

这样查询构建就会知道您指的是哪个实体。

希望这对您有所帮助,注意安全。