【问题标题】:ManyToMany relation with DQL query与 DQL 查询的多对多关系
【发布时间】:2020-11-01 09:09:00
【问题描述】:

在我的网站上,我有用户和编队。我希望用户可以将 Formations 添加到他们的收藏夹中。所以我对我的用户做了一个多对多关系:

/**
     * 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 表使其工作。谢谢

【问题讨论】:

    标签: symfony many-to-many dql


    【解决方案1】:

    我建议在您的实体中添加名称注释。

    @ORM\Table(name="formation")
    

    这样查询构建将知道您所指的实体。

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

    【讨论】:

    • 感谢您的回答。我已经在我的两个实体上添加了名称注释,但仍然出现相同的错误。
    • 好吧,它成功了,但结果不是我想要的 ^^
    • 解释更多你正在搜索的结果。也许我可以帮忙
    • 我发了另一个帖子,因为它是另一个主题:stackoverflow.com/questions/64630943/…
    • 很高兴您找到了解决方案。祝你好运,保重并保持安全:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 2021-10-03
    • 2018-11-02
    相关资源
    最近更新 更多