доктрина Symfony

0

Я пытаюсь использовать доктрину и принимать упорядоченные значения, но я не могу.

Я стараюсь:

$articlesB = $this
                ->getDoctrine()
                ->getManager()
                ->getRepository('theBundle:Article')
                ->findAll(array('date' => 'ASC'));

Вы знаете, как принять эти значения, упорядоченные по дате? Столбец называется датой и принимает все даты. Я хочу, чтобы этот заказчик.

Спасибо С уважением

Теги:
doctrine
doctrine2

2 ответа

3
Лучший ответ

Используйте findBy вместо findAll с пустым массивом для первого аргумента (критерии выбора) и ваш массив сортировки в качестве второго аргумента.

$articlesB = $this
            ->getDoctrine()
            ->getManager()
            ->getRepository('theBundle:Article')
            ->findBy(array(),array('date' => 'ASC'));

В этом случае я посмотрел на фактический исходный код. Вы бы подумали, что findAll() будет работать, но нет. Он никогда не передает критерии сортировки.

  • 0
    findAll - это просто ярлык для findBy(array()) ( doctrine-project.org/api/orm/2.2/… ), так что это будет самый простой подход.
0

Вам необходимо создать ArticleRepostory и в нем:

public function getOrderedArticles()
{
    $return $this->getEntityManager()
            ->createQuery(
            "SELECT a FROM theBundle:Article a "
            . "ORDER BY a.date ASC"
    );
}

так что ваш контроллер мог бы

$articlesB = $this
                ->getDoctrine()
                ->getManager()
                ->getRepository('theBundle:Article')
                ->getOrderedArticles();
  • 2
    На самом деле, встроенный метод репозитория findBy может обрабатывать как сортировку, так и ограничение / смещение без какого-либо дополнительного кодирования.
  • 0
    Это было именно то, что мне нужно, и очень быстро! Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню