2014-04-23 57 views
1

我想从Doctrine2实体获取表的行数。学说2 - 从实体获取行数

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

use \MyVendor\MyModule\Entity\Car 

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

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

有人知道我该怎么做,或者如果我完全不在,不应该从实体本身那样做?

回答

1

Doctrine2实体是POPO(plain-old-php-objects),因此在Car实例上有这种类型的方法(即'table'操作)并不合理。这就是EntityRepository是 - 你可以定义一个信息库用于Car实体,其中组Car相关查询:

使用看起来像下面这样:

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

你可以这样定义使用一个方法CarRepository::getNbCars() DQL,SQL或queryBuilder(您的首选项)来定义查询以计算您的汽车数量 - 大概如SELECT COUNT(id) FROM car;,如果您使用的是原始SQL。

我喜欢这种方法,因为您可以用这种方式很容易地基于实体分组(并重用)查询。

你会发现在文档一些有用的信息有关在这里创建一个自定义回购:

希望这有助于!

+1

谢谢Darragh,这确实是这样做的正确方法。问题在于,我的同事通过配置文件使用了一种通用的方式,并且它可以为他工作的唯一方式就是使用Car-> getNbCars(); – GnsBeldaran