symfony - 不能在不选择至少一个根实体别名的情况下通过标识变量选择实体

标签 symfony join doctrine-orm inner-join dql

Ads实体由地理信息描述:国家>地区>县 . Ads实体仅与 County 相关联.因此,检索 Ads按国家/地区将要求我们两次加入实体。
我的目标是计算给定国家/地区的广告数量。为此,我尝试了这个 DQL 查询,但没有成功:

public function getMotorsAdsCountByCountry($slug){
    $qb = $this->_em->createQueryBuilder()
            ->select("m.id, COUNT(m.id) AS cnt")
            ->from("MinnAdsBundle:MotorsAds", "m")
            ->join("m.county","county")->addSelect("county")
            ->join("county.region","region")->addSelect("region")
            ->join("region.country","country")->addSelect("country")
            ->where("country.slug=:slug")
            ->setParameter(":slug", $slug);
    return $qb->getQuery()->getSingleScalarResult();
}
我得到的错误是:

[Semantical Error] line 0, col -1 near 'SELECT m.id,': Error: Cannot select entity through identification variables without choosing at least one root entity alias.


我什至在 this link 中看到了一篇关于相同错误的帖子。但没有成功。

最佳答案

我找到了解决方案:

    $qb = $this->_em->createQueryBuilder()
            ->select("COUNT(m.id) AS cnt")
            ->from("MinnAdsBundle:MotorsAds", "m")
            ->join("m.county","county")
            ->join("county.region","region")
            ->join("region.country","country")
            ->where("country.slug=:slug")
            ->setParameter(":slug", $slug);

除了修改 select() 之外,我刚刚删除了 addSelect()。

关于symfony - 不能在不选择至少一个根实体别名的情况下通过标识变量选择实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28937655/

相关文章:

php - symfony 中的惰性服务不起作用

mysql - 检查我的查询是否不返回实体

php - Symfony2 - 在 Netbeans 上自动安装 Assets

JoinQueryOver 中的 NHibernate QueryOver Sum

mysql - 如何在 MYSQL 中创建此查询?加入是什么?

php - 从 Doctrine2 获取值数组的正确方法

php - Symfony 3 - Doctrine 错误的查询结构 - 多表

javascript - 从 jQuery 加载 symfony 2 目录中的文件

sql - 我可以在 JOIN 条件中使用 CASE 语句吗?

php - Doctrine query builder IN 不工作