与查询构建器

时间:2015-05-06 10:41:42

标签: php doctrine-orm

我有两个实体 - BlacklistedUsers和UserAccounts。我正在尝试构建一个DQL,允许我将这两个实体连接在一起并获得BlacklistedUsers#idUserAccounts#nameBlacklistedUsers#reason

我的查询构建器代码是

$qb = $this->createQueryBuilder('u')
                    ->join(UserAccounts::class, 'a');   

无论多么简单,以下代码仍然设法失败

  

致命错误:未捕获的异常   '学说\ ORM \查询\ QueryException'有消息' SELECT u FROM   Orm \ Entity \ BlacklistedUsers u INNER JOIN Orm \ Entity \ UserAccounts a   订购u.reason asc'在***

我再次检查生成的查询再次文档(http://doctrine-orm.readthedocs.org/en/latest/reference/dql-doctrine-query-language.html)并将其与其示例进行比较

<?php
$query = $em->createQuery('SELECT a FROM CmsArticle a JOIN a.user u ORDER BY u.name ASC');
$articles = $query->getResult(); // array of CmsArticle objects

我认为他们的查询和我的查询构建器生成的内容之间没有任何区别。

以下是使事情变得更容易的类图

class diagram

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

看起来您的类未正确映射。尝试从类库创建queryBuilder:

$repo = $this->getDoctrine()->getRepository('AppBundle:BlacklistedUsers');

$query = $repo->createQueryBuilder('b')
    ->select('b.id, u.name, b.reason')
    ->join('b.userAccount', 'u')
    ->orderBy('b.reason', 'ASC')
    ->getQuery();

$products = $query->getResult();