学说2 - 从实体获取行数

时间:2014-04-23 16:14:53

标签: doctrine-orm

我正在尝试从Doctrine2实体获取表的行数。

例如,假设我有一张包含4条记录的表'Car'。我想实现一个静态(或不是)方法'getNbCars()',它将返回'4'。

use \MyVendor\MyModule\Entity\Car   

$car = new Car();
$car->getNbCars(); // would return 4
// or
Car::getNbCars(); // same

我查看了文档和NativeNamedQueries注释,但我似乎无法通过。

有人知道我是如何做到的,或者我是否已完全离开,不应该从实体本身那样做?

1 个答案:

答案 0 :(得分:1)

Doctrine2实体是POPO(普通旧的php对象),因此在Car的实例上使用这种类型的方法(即:' table'操作)并不是真的有意义。这是EntityRepository的用途 - 您可以为Car实体和其中Car个相关查询定义存储库:

用法类似于以下内容:

$nbCars = $em->getRepository('MyVendor\MyModule\Entity\Car')->getNbCars();

然后,您可以使用DQL,SQL或queryBuilder(您的首选项)定义方法CarRepository::getNbCars()来定义查询以计算您的汽车 - 如果您使用的是原始SQL,则可能类似于SELECT COUNT(id) FROM car;

我喜欢这种方法,因为您可以通过这种方式轻松地对基于实体的查询进行分组(和重用)。

您可以在有关在此处创建自定义回购的文档中找到一些有用的信息:

希望这有帮助!