【发布时间】:2017-03-18 02:05:46
【问题描述】:
我写了这个查询。
$query = $this->getEntityManager()->createQueryBuilder();
$query->select(['cart','subscriptions', 'member'])
->from('ComitiUserBundle:Cart', 'cart')
->leftJoin('cart.subscriptions', 'subscriptions')
->leftJoin('subscriptions.member', 'member')
->where('cart.club = :club_id')
->andWhere('subscriptions.clubSeason = :season_id')
->setParameter('club_id', $club)
->setParameter('season_id', $season);
if($section != null && !is_array($section)){
$query->andWhere('subscriptions.section = :section_id')
->setParameter('section_id', $section);
} elseif($section != null && is_array($section)){
$query->andWhere('subscriptions.section IN :section_ids')
->setParameter('section_ids', $section);
}
$query->orderBy('cart.transaction_date','DESC');
return $query->getQuery()->getResult();
我得到了这个错误作为回报:
[语法错误] 第 0 行,第 28 列:错误:预期标识变量 |标量表达式 |聚合表达式 |功能声明 |部分对象表达式 | "(" 子选择 ")" | CaseExpression,得到“成员”
事实上,我尝试将我的结果集合与其中的成员结合起来。 Member 是我的 Subscription 实体中的 manyToOne 属性。它是这样定义的:
/**
* @ORM\ManyToOne(targetEntity="Comiti\UserBundle\Entity\UserComiti", inversedBy="subscriptions", cascade={"persist"})
* @ORM\JoinColumn(name="member_id", referencedColumnName="id")
*/
protected $member;
【问题讨论】:
-
查看错误。错误说你在子查询中有语法错误
-
您发布的内容似乎正确。注释掉第二个 leftJoin 之后的所有内容,以验证它是联接。当然,如果您只是修改了关联,请执行清除缓存。
-
您发布的查询是在控制器中还是在存储库中?如果是存储库,它与哪个实体有关?
标签: symfony doctrine-orm