我想知道是否可以仅查询特定数量的对象并对其进行排序。例如,我想查询添加的最新产品,我想从表中只获得最新的10个产品。
我不知道你是否可以在控制器中订购特定金额,但我知道你可以在树枝上做slice
。但是,如果可能的话,直接从查询中获得正确的数量就足够了。
然而由于某些原因,我甚至无法对我得到的产品进行排序(http://symfony.com/doc/current/book/doctrine.html#fetching-objects-from-the-database)。文档清楚地表明您可以轻松订购对象。但是我的代码没有订购:
$newProducts = $em->getRepository('MpShopBundle:Product')->findBy(array(), array('id' => 'DESC'));
这将返回所有产品。如何只查询其中的10个?
我如何实现我的目标?
答案 0 :(得分:0)
您可以向findBy()
方法添加更多参数,例如:
$newProducts = $em->getRepository('MpShopBundle:Product')->findBy(
array('foo' => 'bar'),
array('id' => 'ASC'),
10,
0
);
/**
* Finds entities by a set of criteria.
*
* @param array $criteria
* @param array|null $orderBy
* @param int|null $limit
* @param int|null $offset
*
* @return array The objects.
*/
public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
进一步阅读:7. Working with Objects / 7.8.2. By Simple Conditions
EntityRepository#findBy()
方法另外接受排序,限制和偏移作为第二到第四参数。