我正在尝试从Doctrine2实体获取表的行数。
例如,假设我有一张包含4条记录的表'Car'。我想实现一个静态(或不是)方法'getNbCars()',它将返回'4'。
use \MyVendor\MyModule\Entity\Car
$car = new Car();
$car->getNbCars(); // would return 4
// or
Car::getNbCars(); // same
我查看了文档和NativeNamedQueries注释,但我似乎无法通过。
有人知道我是如何做到的,或者我是否已完全离开,不应该从实体本身那样做?
答案 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;
。
我喜欢这种方法,因为您可以通过这种方式轻松地对基于实体的查询进行分组(和重用)。
您可以在有关在此处创建自定义回购的文档中找到一些有用的信息:
希望这有帮助!