Метод reorder
Метод reorder применяется к запросу Eloquent
или Query Builder и позволяет сбросить все ранее
применённые условия сортировки. Если передать
в метод параметры, он сначала сбросит старые
условия и применит новые. Метод полезен для
изменения порядка сортировки в запросах с
условной логикой.
Синтаксис
<?php
$query->reorder();
$query->reorder($column, $direction);
?>
Пример
Давайте получим статьи, отсортированные по дате создания, а затем сбросим сортировку:
<?php
use AppModelsArticle;
$articles = Article::orderBy('created_at', 'desc')
->reorder()
->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
["article 1", "article 2", "article 3", "article 4", "article 5"]
Пример
Давайте отсортируем статьи по названию, а затем сбросим и применим сортировку по идентификатору:
<?php
use AppModelsArticle;
$articles = Article::orderBy('title')
->reorder('id', 'desc')
->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
["article 5", "article 4", "article 3", "article 2", "article 1"]
Пример
Давайте используем метод reorder в условном
запросе для изменения сортировки в зависимости
от переданного параметра:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use IlluminateHttpRequest;
class ArticleController extends Controller
{
public function index(Request $request)
{
$query = Article::query();
if ($request->has('sort')) {
$query->orderBy('created_at', 'desc');
}
if ($request->has('reset_sort')) {
$query->reorder('id', 'asc');
}
$res = $query->get();
foreach ($res as $article) {
echo $article->title;
}
}
}
?>
Смотрите также
-
метод
orderBy,
который добавляет условие сортировки -
метод
latest,
который сортирует по убыванию даты создания -
метод
oldest,
который сортирует по возрастанию даты создания -
метод
inRandomOrder,
который сортирует записи в случайном порядке