我的原始查询是:
Select * from user u
inner join company c
on u.company_id = c.id
where u.id=2
我把它做成:
$em = $this->get('doctrine')->getEntityManager();
$qb = $em->createQueryBuilder();
$qb->select('u')
->from('TemplateManager\Bundle\DocumentGeneratorBundle\Entity\User u')
->innerjoin('u.company')
->where('u.id = ' . $id);
$query = $qb->getQuery();
$result = $query->getResult();
我得到500,日志中包含以下详细信息:
[2016-09-27 12:06:34]请求。匹配路径“模板管理器_文档生成器_api_客户端_find”(参数:“控制器”(_C):“模板管理器\捆绑包\文档生成器捆绑包\控制器\API\客户端控制器::查找操作”,“id”:“2”,“_路由”:[] []
〉[2016-09-27 12:06:34]安全性.调试:[
2016-09-27 12:06:34]安全性从会话中读取安全上下文[] []〉调试:[] []
〉[2016-09-27 12:06:34]安全性。调试:用户名“admin”已从用户提供程序中重新加载。[] []
〉[2016-09-27 12:06:34]请求。关键:未捕获PHP异常运行时异常:“在调用getRootAlias()之前没有设置别名。”在//myproject//vendor/doctrine/orm/lib/Doctrine/ORM/QueryBuilder. php第423行{“异常”:“[对象](运行时异常(代码:0):调用getRootAlias()前没有设置别名。at //myproject//vendor/doctrine/orm/lib/Doctrine/ORM/QueryBuilder.php:423)"} []
〉[2016-09-27 12:06:34]安全性调试:在会话[] []中写入安全上下文
2条答案
按热度按时间webghufk1#
尝试在$em-〉createQueryBuilder()上添加别名;
顺便说一句,准备好您的查询以避免sql注入
在我自己的项目中,我尝试了这个方法,效果很好:
idUser是另一个表,不是ID,我们遇到了迁移问题:)
pu3pd22g2#
->from()
需要第二个参数,因此您的程式码看起来像:更好的是,您可以像这样使用
User::class
: