Php 对实体数组进行排序symfony2

Php 对实体数组进行排序symfony2,php,symfony,Php,Symfony,我有一个实体数组,我想根据这个实体的一个属性对它进行排序。 我看到类似sort()的函数是在php中定义的,但我想添加一个元素,根据该元素进行比较。有什么想法吗 $qb->select('a') ->from('TelnOperatorBundle:Subnumber', 'a') ->where('a.numberrange = :id') ->setParameter('id', $id); //$entites=$qb->ge

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

如果您没有理由需要未排序的数组,并且您的实体由条令处理,您只需在控制器中使用以下代码:

$this->getDoctrine()->getRepository('TelnOperatorBundle:Subnumber')->findBy(
    array('numberrange' => $id),
    array('numberrange' => 'asc')
);
第一个数组保存
WHERE
子句的值,第二个数组保存
ORDER BY
的值


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

[…]
->where('a.numberrange = :id')
->addOrderBy('a.numberrange', 'desc')
[…]
请回答您的问题



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

为什么不在查询中添加orderBy()。@AhmedSiouani我尝试了orderBy,它适用于整数属性,但我想对字符串属性进行排序。有可能吗?是的,有可能。如果列的类型定义良好,则不需要强制转换。我想将其添加到查询生成器中。我认为它更合适,但它应该在->何处->设置参数之后吗?另一个问题:我要排序的属性是一个像“060015000”这样的数字字符串,这是问题吗?您可以将它放在
where()
之后或之前-这两种符号都可以使用。我不认为比较那些字符串是一个问题。是的,我试过了,现在它可以工作了,但问题是我的属性是一个字符串。可能吗?只需将
addOrderBy('a.numberrange','desc')
中的名称替换为要使用的字段即可。