Сортировка массива сущностей по вычисленному значению (symfony / doctrine) - PullRequest
0 голосов
/ 04 июня 2018

У меня есть массив объектов, которые я хочу заказать по названию страны, в переводе с помощью международного региона.Названия стран хранятся в базе данных в виде двухбуквенных кодов и переводятся с помощью метода объекта.

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 голосов
/ 04 июня 2018

Сделайте пользовательский запрос в репозитории вашей сущности.Примерно так ...

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

Затем в вашем контроллере сделайте следующее:

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