Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 条令:在调用getRootAlias()错误之前未设置别名_Php_Symfony_Doctrine Orm_Doctrine - Fatal编程技术网

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();