Laravel Eloquent: результаты заказа всех ()

120

Я застрял в простой задаче. Мне просто нужно заказать результаты, исходящие от этого вызова

$results = Project::all();

Где Project - модель. Я пробовал это

$results = Project::all()->orderBy("name");

Но это не сработало. Каков лучший способ получить все данные из таблицы и получить их заказ?

Теги:
eloquent
sql-order-by
laravel-4

5 ответов

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

Фактически вы можете сделать это в запросе.

$results = Project::orderBy('name')->get();

Это вернет все результаты с правильным порядком.

56

Вы все равно можете использовать sortBy (на уровне коллекции) вместо orderBy (на уровне запроса), если вы все еще хотите использовать all(), поскольку он возвращает коллекцию объектов.

Восходящий порядок

$results = Project::all()->sortBy("name");

По убыванию

$results = Project::all()->sortByDesc("name");

Подробнее см. документацию о Коллекциях.

https://laravel.com/docs/5.1/collections

  • 0
    Именно то, что я искал. Будет ли широкое использование этого иметь какие-либо недостатки по сравнению с использованием orderBy на уровне запроса?
  • 1
    \ @foreach ($ posts-> sortByDesc ('creat_at') как $ post) \ @include ('posts.post') \ @endforeach
Показать ещё 2 комментария
13

Кроме того, чтобы только направить прежние ответы, он также может быть отсортирован либо в порядке убывания desc, либо в порядке возрастания asc, добавив либо в качестве второго параметра.

$results = Project::orderBy('created_at', 'desc')->get();

Надеюсь, что это поможет.

8

Обновление 2017


Laravel 5.4 добавил методы orderByDesc() для построения запросов:

$results = Project::orderByDesc('name')->get();
1

Ознакомьтесь с методом sortBy для Eloquent: http://laravel.com/docs/eloquent

Ещё вопросы

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