Php 条令:在调用getRootAlias()错误之前未设置别名
我最初的问题是:Php 条令:在调用getRootAlias()错误之前未设置别名,php,symfony,doctrine-orm,doctrine,Php,Symfony,Doctrine Orm,Doctrine,我最初的问题是: 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('Te
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]请求信息:匹配的路线
“templatemanager\u documentgenerator\u api\u client\u find”(参数:
“_控制器”:
“TemplateManager\Bundle\DocumentGeneratorBundle\Controller\API\ClientController::findAction”,
“id”:“2”和“U路线”:
“templatemanager\u documentgenerator\u api\u client\u find”)[]
> [2016-09-27 12:06:34]security.DEBUG:从
会议[]
> [2016-09-27 12:06:34]security.DEBUG:从用户重新加载用户
供应商。[] []
> [2016-09-27 12:06:34]security.DEBUG:重新加载用户名“admin”
来自用户提供程序。[] []
> [2016-09-27 12:06:34]请求。关键:未捕获的PHP异常
RuntimeException:“在调用getRootAlias()之前未设置别名。”
位于//myproject//vendor/doctor/orm/lib/doctor/orm/QueryBuilder.php
第423行{“异常”:“[object](运行时异常(代码:0):无别名
在调用getRootAlias()之前设置。在
//myproject//vendor/doctor/orm/lib/doctor/orm/QueryBuilder.php:423)“}
[]
> [2016-09-27 12:06:34]security.DEBUG:在
会议[]
试试这个
在$em->createQueryBuilder()上添加别名
顺便说一下,准备查询以避免sql注入
$qb->select('u')
->from('User', 'u')
->where('u.id = ?1')
->orderBy('u.name', 'ASC')
->setParameter(1, 100);
在我自己的项目中,我尝试了这个方法,效果很好:
$em = $this->get('doctrine')->getEntityManager();
$qb = $em->createQueryBuilder('u');
$qb->select('u')
->from('INSIDE\Bundle\AdminBundle\Entity\TAdminUser', 'u')
->innerJoin('u.idUser' , 'myalias')
->where('u.idAdminUser = 2');
$query = $qb->getQuery();
$result = $query->getResult();
idUser是另一个表,不是一个id,我们有迁移问题:)它是一个连接表。你说它是连接表是什么意思?我需要的查询是SQL连接。检查原始查询我尝试了这一点,结果是:$em=$this->get('doctrine')->getEntityManager()$qb=$em->createQueryBuilder('u')$qb->select('u')->from('INSIDE\Bundle\AdminBundle\Entity\TAdminUser','u')->innerJoin('u.idUser','myalias')->其中('u.iddminuser=:ua_id')->setParameter('ua_id',2);我添加了->从('INSIDE\Bundle\AdminBundle\Entity\TAdminUser','u')编辑主要答案请?
$em = $this->get('doctrine')->getEntityManager();
$qb = $em->createQueryBuilder('u');
$qb->select('u')
->from('INSIDE\Bundle\AdminBundle\Entity\TAdminUser', 'u')
->innerJoin('u.idUser' , 'myalias')
->where('u.idAdminUser = 2');
$query = $qb->getQuery();
$result = $query->getResult();