【问题标题】:Doctrine manyToMany join, not working多对多原则加入,不起作用
【发布时间】:2015-09-08 12:55:03
【问题描述】:

我的选择不起作用,为什么???看到别人的帖子,没解决这个问题。

symfony2 doctrine join

Doctrine Join DQL

如果我像这样使用连接:

->join('User', 'u')

结果是 4 个值,我预计是 2...

型号:

class User
{
    ...

    /**
     * @ManyToMany(targetEntity="UserGroup", mappedBy="users", cascade={"all"})
     * @JoinTable(name="users_user_group")
     */
    protected $userGroups;

class UserGroup
{
    ...

    /**
     * @ManyToMany(targetEntity="User", inversedBy="userGroups", cascade={"all"})
     * @JoinTable(name="users_user_group")
     **/
    public $users;

查询生成器:

$queryBuilder = $this->getController()->getRepository()
        ->createQueryBuilder('ug')
        ->select('ug, u')
        ->leftJoin('User', 'u', 'WITH', 'ug.id = u.userGroups')
        ->andWhere('u.id IN (:ids)')
        ->setParameter('ids', $usersId);

我收到这条消息:

[Semantical Error] line 0, col 63 near 'userGroups WHERE': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected.

这个 SQL 工作,为什么 DQL 不行?

SELECT 
    *
FROM
    users_user_group ug
        LEFT JOIN
    user u ON ug.user_id = u.id
WHERE
    ug.user_id IN (1 , 2)

【问题讨论】:

    标签: join doctrine-orm many-to-many


    【解决方案1】:

    我改变了这一行:

    ->leftJoin('User', 'u', 'WITH', 'ug.id = u.userGroups')
    

    为它:

    ->join('User', 'u', 'WITH', 'ug.id = u.id')
    

    \o/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-21
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 2015-04-05
      • 1970-01-01
      相关资源
      最近更新 更多