加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Doctrine:在调用getRootAlias()错误之前没有设置别名

发布时间:2020-12-13 16:05:40 所属栏目:PHP教程 来源:网络整理
导读:我的原始查询是: Select * from user uinner join company con u.company_id = c.id where u.id=2 我做到了: $em = $this-get('doctrine')-getEntityManager(); $qb = $em-createQueryBuilder(); $qb-select('u') -from('TemplateManagerBundleDocumentG
我的原始查询是:

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('TemplateManagerBundleDocumentGeneratorBundleEntityUser u')
            ->innerjoin('u.company')
            ->where('u.id = ' . $id);
        $query = $qb->getQuery();
        $result = $query->getResult();

我在日志中获得500以下的详细信息:

[2016-09-27 12:06:34] request.INFO: Matched route
“templatemanager_documentgenerator_api_client_find” (parameters:
“_controller”:
“TemplateManagerBundleDocumentGeneratorBundleControllerAPIClientController::findAction”,
“id”: “2”,“_route”:
“templatemanager_documentgenerator_api_client_find”) [] []
?> [2016-09-27 12:06:34] security.DEBUG: Read SecurityContext from the
session [] []
?> [2016-09-27 12:06:34] security.DEBUG: Reloading user from user
provider. [] []
?> [2016-09-27 12:06:34] security.DEBUG: Username “admin” was reloaded
from user provider. [] []
?> [2016-09-27 12:06:34] request.CRITICAL: Uncaught PHP Exception
RuntimeException: “No alias was set before invoking getRootAlias().”
at //myproject//vendor/doctrine/orm/lib/Doctrine/ORM/QueryBuilder.php
line 423 {“exception”:”[object] (RuntimeException(code: 0): No alias
was set before invoking getRootAlias(). at
//myproject//vendor/doctrine/orm/lib/Doctrine/ORM/QueryBuilder.php:423)”}
[]
?> [2016-09-27 12:06:34] security.DEBUG: Write SecurityContext in the
session [] []

解决方法

试试这个
在$em-> createQueryBuilder();上添加别名;

$em->createQueryBuilder('u');

顺便说一下准备你的查询以避免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('INSIDEBundleAdminBundleEntityTAdminUser','u')
        ->innerJoin('u.idUser','myalias')
        ->where('u.idAdminUser = 2');

$query = $qb->getQuery();
$result = $query->getResult();

idUser是另一个表不是我们有迁移问题的id

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读