按计算值排序实体数组(symfony / doctrine)

时间:2018-06-04 15:33:58

标签: symfony doctrine-orm

我有一系列实体,我想按国家名称订购,由Intl region bundle翻译。国家/地区名称作为双字母代码存储在数据库中,并借助于实体的方法进行翻译。

class Activity {
    // ...
   /**
    * @ORM\Column(type="string", length=2)
    */
    private $country;

    public function getCountryName()
    {
        return Intl::getRegionBundle()->getCountryName($this->country);
    }
}

我如何按国家/地区名称订购一系列活动?我找不到使用Doctrine的方法,usort不起作用。

$activities = $this->getDoctrine()->getRepository(Activity::class)->findAll();
// how do I order this by country name?

1 个答案:

答案 0 :(得分:0)

在您的实体存储库中进行自定义查询。像那样......

public function getCountryOrderedActivity() {
    return $this->createQueryBuilder("c")
                ->orderBy("c.country", "ASC")
                ->getQuery()
                ->getOneOrNullResult();
}

然后在你的控制器中执行以下操作:

$this->getDoctrine()->getManager()->getRepository(Activity::class)->getCountryOrderedActivity();