对实体symfony2的数组进行排序


sort an array of entities symfony2

我有一个实体数组,我想根据这个实体的一个属性对它进行排序。我看到像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());
 }

如果你没有理由需要无序数组并且你的实体是由Doctrine处理的你可以简单地在你的控制器中使用以下代码:

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

第一个数组保存WHERE子句的值,第二个数组保存ORDER BY的值。


如果您想创建自己的查询—例如在存储库中使用—只需添加:

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

回复您的查询。


在这两种情况下,结果都是按数据库排序的。所以你不需要自己做这个