我的选择不起作用,为什么???我看到其他帖子,但没有解决这个问题。
如果我使用这样的连接:
->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)
答案 0 :(得分:0)
我更改了这一行:
->leftJoin('User', 'u', 'WITH', 'ug.id = u.userGroups')
为它:
->join('User', 'u', 'WITH', 'ug.id = u.id')
\ O /