繁体   English   中英

基本原则与查询生成器的结合

[英]Basic doctrine join with query builder

我有两个实体-BlacklistedUsers和UserAccounts。 我正在尝试构建一个DQL,使我可以将这两个实体结合在一起并获得BlacklistedUsers#idUserAccounts#nameBlacklistedUsers#reason

我的查询生成器代码是

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

而且无论下面的代码多么简单,它仍然会失败

致命错误 :***中出现未捕获的异常'Doctrine \\ ORM \\ Query \\ QueryException',消息为'从Orm \\ Entity \\ BlacklistedUsers中选择u u INNER JOIN Orm \\ Entity \\ UserAccounts a ORDER BY u.reason asc'

我仔细检查了生成的查询Agains文档( 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

我看不到它们具有的查询与查询生成器生成的内容之间有任何区别。

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

类图

谢谢你的帮助

看来您的课程未正确映射。 尝试从类存储库创建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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM