对一组实体symfony2进行排序

时间:2013-04-11 14:31:55

标签: php symfony

我有一个实体数组,我想根据这个实体的一个属性对它进行排序。 我看到像sort()这样的函数是在php中定义的,但我想添加基于哪个元素进行比较。任何想法???

$qb->select('a')
     ->from('TelnOperatorBundle:Subnumber', 'a')
     ->where('a.numberrange = :id')
     ->setParameter('id', $id);

 //$entites=$qb->getQuery()
             // ->getResult();
 $entites = $qb->getQuery()->getResult();
asort($entites);
//var_dump($entites);


foreach($entites as $entite)
{
  //$entite est une instance d'Article pour notre exemple
   echo($entite->getId());
 }

1 个答案:

答案 0 :(得分:1)

如果您没有理由需要无序数组且您的实体由Doctrine处理,您可以在控制器中使用此代码:

$this->getDoctrine()->getRepository('TelnOperatorBundle:Subnumber')->findBy(
    array('numberrange' => $id),
    array('numberrange' => 'asc')
);

第一个数组包含WHERE子句的值,第二个数组包含ORDER BY的值。


如果要创建自己的查询(例如在存储库中使用),只需添加:

[…]
->where('a.numberrange = :id')
->addOrderBy('a.numberrange', 'desc')
[…]

查询。


在这两种情况下,结果都按数据库排序。因此,您无需自行完成此操作。