Symfony2查询具有订单的特定数量的对象

时间:2015-07-28 09:17:43

标签: php mysql symfony doctrine-orm

我想知道是否可以仅查询特定数量的对象并对其进行排序。例如,我想查询添加的最新产品,我想从表中只获得最新的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个?

我如何实现我的目标?

1 个答案:

答案 0 :(得分:0)

您可以向findBy()方法添加更多参数,例如:

$newProducts = $em->getRepository('MpShopBundle:Product')->findBy(
    array('foo' => 'bar'),
    array('id' => 'ASC'),
    10,
    0
);

signature of this method

/**
 * 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()方法另外接受排序,限制和偏移作为第二到第四参数