Вопрос:

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

laravel laravel-4 eloquent sql-order-by

125226 просмотра

8 ответа

6045 Репутация автора

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

$results = Project::all();

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

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

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

Автор: MatterGoal Источник Размещён: 02.07.2013 03:18

Ответы (8)


2 плюса

8016 Репутация автора

Проверьте sortByметод для Eloquent: http://laravel.com/docs/eloquent

Автор: Half Crazed Размещён: 02.07.2013 03:42

276 плюса

2855 Репутация автора

Решение

Вы можете сделать это в запросе.

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

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

Автор: Travis B Размещён: 02.07.2013 05:37

23 плюса

934 Репутация автора

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

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

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

Автор: kehinde Размещён: 12.02.2016 12:56

81 плюса

1801 Репутация автора

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

По возрастанию

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

В порядке убывания

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

Ознакомьтесь с документацией о Коллекциях для получения более подробной информации.

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

Автор: Yannick Y Размещён: 10.03.2016 04:58

9 плюса

5718 Репутация автора

2017 обновление


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

$results = Project::orderByDesc('name')->get();
Автор: Sebastien Horin Размещён: 22.03.2017 06:20

5 плюса

1406 Репутация автора

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

$results = Project::latest('created_at')->get();
Автор: DsRaj Размещён: 23.02.2018 06:07

1 плюс

31 Репутация автора

Обратите внимание: вы можете:

$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 заказывает результат.

Автор: hkcoyant Размещён: 08.08.2018 06:59

0 плюса

1719 Репутация автора

СДЕЛАЙ ЭТО:

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

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

$results = Project::all()->sortBy('name');
Автор: doncadavona Размещён: 30.08.2018 02:01
Вопросы из категории :
32x32