Php Doctrine2 QueryBuilder联接

Php Doctrine2 QueryBuilder联接,php,zend-framework,doctrine-orm,Php,Zend Framework,Doctrine Orm,所以,我对教义是新手,我正在尝试做一个基本的联合,但我想我遗漏了一些东西,关于我的实体,或者我不确定 条令存储库: $queryBuilder = $this->createQueryBuilder() ->select('c.*, a.*') ->from('My\Entity\CompanyAdminNotes', 'c') ->innerJo

所以,我对教义是新手,我正在尝试做一个基本的联合,但我想我遗漏了一些东西,关于我的实体,或者我不确定

条令存储库:

$queryBuilder = $this->createQueryBuilder()
                     ->select('c.*, a.*')
                     ->from('My\Entity\CompanyAdminNotes', 'c')
                     ->innerJoin('Administrators','a','a.id = c.admin_id')
                     ->where('c.admin_id = :admin_id')
                     ->setParameter('admin_id', $id);
return $queryBuilder->getQuery()->getResult();
我得到以下错误

消息:[语义错误]第0行,第76列“a”附近, My\Entity\CompanyAdminNotes”:错误:标识变量 管理员已在联接路径表达式中使用,但未定义 以前

我不确定我的查询是错误的还是没有设置其他内容。你们能给我一个提示吗?

试着改变一下:

->innerJoin('Administrators','a','a.id = c.admin_id')
为此:

->innerJoin('My\Entity\Administrators','a','a.id = c.admin_id')
因为它需要路径,就像您从

更新

尝试其他类似的解决方案:

         $queryBuilder = $this->createQueryBuilder('c')
             ->select('c, a')
             ->from('My\Entity\CompanyAdminNotes', 'c')
             ->innerJoin('My:Administrators','a','a.id = c.admin_id')
             ->where('c.admin_id = :admin_id')
             ->setParameter('admin_id', $id);
尝试更改此选项:

->innerJoin('Administrators','a','a.id = c.admin_id')
为此:

->innerJoin('My\Entity\Administrators','a','a.id = c.admin_id')
因为它需要路径,就像您从

更新

尝试其他类似的解决方案:

         $queryBuilder = $this->createQueryBuilder('c')
             ->select('c, a')
             ->from('My\Entity\CompanyAdminNotes', 'c')
             ->innerJoin('My:Administrators','a','a.id = c.admin_id')
             ->where('c.admin_id = :admin_id')
             ->setParameter('admin_id', $id);

您需要在联接中添加类/实体名称。。i、 e.
innerJoin(实体\管理员)
您需要在加入中添加类/实体名称。。i、 e.
innerJoin(Entity\Administrators)
No,仍然不起作用消息:[语义错误]第0行,第85列靠近“a,My\Entity\CompanyAdminNotes”:错误:标识变量My\Entity\Administrator在联接路径表达式中使用,但以前未定义。是,我已经仔细检查了它我需要在我的实体中将某些字段声明为@Join吗?好的,请记住删除有时会产生错误的缓存。您不需要将某些字段声明为@Join,我认为问题在queryNo中是语义问题,仍然不起作用消息:[语义错误]第0行,第85列靠近'a,My\Entity\CompanyAdminNotes”:错误:标识变量My\Entity\Administrator在联接路径表达式中使用,但以前未定义。是的,我已仔细检查了它是否需要在我的实体中将某些字段声明为@join?确定请记住删除有时会创建错误的缓存否不需要将某些字段声明为@join,我认为这个问题与查询的语义有关