我有两个实体 - BlacklistedUsers和UserAccounts。我正在尝试构建一个DQL,允许我将这两个实体连接在一起并获得BlacklistedUsers#id
,UserAccounts#name
和BlacklistedUsers#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
我认为他们的查询和我的查询构建器生成的内容之间没有任何区别。
以下是使事情变得更容易的类图
感谢您的帮助
答案 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();