我正在使用Doctrine中的QueryBuilder
对象进行查询。在该查询中,我有join
我不知道为什么,给我一个错误,说其中一个表(fe
)的别名(F_Expenses
)不是定义。在SQL中,我的查询看起来像这样:
select * from f_expenses
join users_f_expenses on f_expenses.id=users_f_expenses.id_form
where login="Jack1234";
这就是说,这是包含我的QueryBuilder
对象的函数:
public function getFormsAction($login){
$em = $this->getDoctrine()->getEntityManager();
$qb = $em->createQueryBuilder()
->select('fe')
->from('intranetBundle:Entity\F_Expenses', 'fe')
->innerJoin('fe', 'intranetBundle:Entity\Users_F_Expenses', 'ufe', 'fe.id = ufe.idForm')
->where('ufe.login = :login')
->setParameter('login', $login)
->getQuery();
$formsOfTheUser = $qb->getArrayResult();
$serializer = SerializerBuilder::create()->build();
$serializer->serialize($formsOfTheUser, 'json');
return $formsOfTheUser;
}
注意,是的,数据库中名为id_form
的字段在实体中被命名为idForm
。这正是错误:
[语义错误]第0行,第62页附近的fe内网捆绑:实体\ Users_F_Expenses':错误:Class' fe'没有定义。
我刚刚关注API,join
的第一个参数用于指定FROM
的别名,因此fe
。第二个和第三个参数分别是连接表及其别名(所以intranetBundle:Entity\Users_F_Expenses
和ufe
),最后第四个是on
子句(fe.id = ufe.idForm
)。
我已尝试删除join
行并从第一个表格中生成正常的select
并且它有效,因此我非常确定该错误有待完成使用join
子句。