【发布时间】:2015-09-08 12:55:03
【问题描述】:
我的选择不起作用,为什么???看到别人的帖子,没解决这个问题。
如果我像这样使用连接:
->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