Doctrine manyToMany加入,不工作

时间:2015-09-08 12:55:03

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

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

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的:

$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)

1 个答案:

答案 0 :(得分:0)

我更改了这一行:

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

为它:

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

\ O /