【问题标题】:Doctrine2 QueryBuilder JoinDoctrine2 QueryBuilder 加入
【发布时间】:2017-06-13 10:21:55
【问题描述】:

所以,我是教条的新手,我正在尝试做一个基本的关节,但我想我在我的实体上遗漏了一些东西,或者我不确定。

学说库:

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

我收到以下错误

消息:[Semantical Error] line 0, col 76 near 'a, My\Entity\CompanyAdminNotes':错误:标识变量 管理员在连接路径表达式中使用但未定义 之前。

我不确定我的查询是错误的还是未设置其他内容。各位大神能给个提示吗?

【问题讨论】:

  • 你需要在你的加入中添加类/实体名称..即innerJoin(Entity\Administrators)

标签: php zend-framework doctrine-orm


【解决方案1】:

尝试改变这个:

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

到这里:

->innerJoin('My\Entity\Administrators','a','a.id = c.admin_id')

因为它需要你在from中所做的路径

更新

尝试这样的另一种解决方案:

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

【讨论】:

  • 不,仍然不工作 消息:[语义错误] line 0, col 85 near 'a, My\Entity\CompanyAdminNotes': Error: Identification Variable My\Entity\Administrator used in join path表达式,但之前没有定义。
  • 是的,我已经仔细检查过了
  • 我需要在我的实体中将某些字段声明为@Join 吗?
  • 好的记得删除有时会产生错误的缓存
  • 不,您不需要将某些字段声明为@Join,我认为问题与查询有关
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-23
  • 2017-07-13
  • 1970-01-01
相关资源
最近更新 更多