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

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

$results = Project::all();

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

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

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

+176
источник поделиться
8 ответов

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

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

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

+316
источник

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

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

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

По убыванию

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

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

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

+94
источник

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

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

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

+25
источник

Обновление 2017


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

$results = Project::orderByDesc('name')->get();
+10
источник

Пока вам нужен результат для даты как desc

$results = Project::latest('created_at')->get();
+8
источник

СДЕЛАЙ ЭТО:

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

НЕ ДЕЛАЙТЕ ЭТОГО:

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

ЗАЧЕМ? Вкратце, первый подход быстрее второго.

+4
источник

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

+2
источник

Обратите внимание, вы можете сделать:

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

Это генерирует запрос как:

"SELECT name FROM proyect ORDER BY 'name' ASC"

В некоторых приложениях, когда БД не оптимизирована и запрос более сложен, и вам необходимо предотвратить генерацию ORDER BY в готовом SQL, вы можете сделать:

$result = Project::select('name')->get();
$result = $result->sortBy('name');
$result = $result->values()->all();

Теперь php, кто заказывает результат.

+1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос