如何在 Doctrine 中计算具有条件的实体的物品?例如,我意识到我可以使用:
$usersCount = $dm->getRepository('User')->count();
但这只会计算所有用户。我只想计算那些拥有员工类型的人。我可以做类似的事情:
$users = $dm->getRepository('User')->findBy(array('type' => 'employee'));
$users = count($users);
这可行,但不是最佳的。有没有类似下面这样的东西:?
$usersCount = $dm->getRepository('User')->count()->where('type', 'employee');
嗯,你可以使用查询生成器 https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/query-builder.html设置一个COUNT
query:
假设$dm
是您的实体经理。
$qb = $dm->createQueryBuilder();
$qb->select($qb->expr()->count('u'))
->from('User', 'u')
->where('u.type = ?1')
->setParameter(1, 'employee');
$query = $qb->getQuery();
$usersCount = $query->getSingleScalarResult();
或者你可以直接写在DQL http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html:
$query = $dm->createQuery("SELECT COUNT(u) FROM User u WHERE u.type = ?1");
$query->setParameter(1, 'employee');
$usersCount = $query->getSingleScalarResult();
计数可能需要在 id 字段上,而不是在对象上,我记不清了。如果是这样,只需更改COUNT(u)
or ->count('u')
to COUNT(u.id)
or ->count('u.id')
或者无论你的主键字段被称为什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)