如何在DQL,Doctrine ORM中编写count(*) SQL



如何按id获取数据库中的行数? SELECT count(*) FROM members;没有性能问题。使用实体管理器编写此查询的方法有哪些?我正在使用php version 5.6symfony 3

你必须使用你的实体存储库在其中添加一个函数并编写如下内容:

$queryBuilder = $this->_em->createQueryBuilder()
        ->select('COUNT(e)')
        ->from('AppBundle:Entity', 'e');
    return $queryBuilder->getQuery()->getSingleScalarResult();

编辑:刚刚看到格雷瓜尔的回答。那会起作用。但是,如果您已经拥有具有关系的实体,并且它已初始化,则以下内容将允许您获取此信息,而无需对数据库进行其他查询。


您可以使用关联并从集合中获取它(请参阅文档中的处理关联

class SomeEntity
{
    /**
     * @var Collection|Member[]
     */
    protected $members;
    // other properties
    // PHP >= 7 -> public function countMembers(): int
    public function countMembers()
    {
        return $this->getMembers()->count();
    }
    // PHP >= 7 -> public function getMembers(): Collection
    public function getMembers()
    {
        return $this->members;
    }
    // other getters/setters
}

最新更新