РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
283 of 1392 menu

Метод orderByRaw

Метод orderByRaw применяется к запросу Eloquent или Query Builder и позволяет сортировать результаты с помощью произвольного SQL-выражения. В отличие от метода orderBy, который принимает только имя колонки и направление сортировки, orderByRaw даёт возможность использовать функции базы данных, условные конструкции и другие сложные выражения. Первым параметром передаётся строка с SQL-выражением, вторым - массив для привязки параметров (необязательно).

Синтаксис

<?php Model::orderByRaw($expression, $bindings = []); ?>

Пример

Давайте отсортируем статьи по длине поля 'string':

<?php use AppModelsArticle; $articles = Article::orderByRaw('LENGTH(string) DESC')->get(); foreach ($articles as $article) { echo $article->string; } ?>

Результат выполнения кода:

"longest string here" "medium text" "short"

Пример

Давайте отсортируем пользователей по имени, но так, чтобы записи с определённым значением были в начале:

<?php use AppModelsUser; $users = User::orderByRaw("CASE WHEN string = 'admin' THEN 0 ELSE 1 END")->get(); foreach ($users as $user) { echo $user->string; } ?>

Результат выполнения кода:

"admin" "user" "user" "guest"

Пример с привязкой параметров

Давайте отсортируем статьи по дате с использованием функции базы данных и безопасной привязкой параметров:

<?php use AppModelsArticle; use IlluminateSupportCarbon; $date = Carbon::now()->subDays(30); $articles = Article::orderByRaw( "CASE WHEN created_at > ? THEN 0 ELSE 1 END", [$date] )->get(); foreach ($articles as $article) { echo $article->string; } ?>

Результат выполнения кода:

"New article 1" "New article 2" "Old article 1"

Смотрите также

  • метод orderBy,
    который задаёт стандартную сортировку по колонке
  • метод orderByDesc,
    который сортирует по убыванию
  • метод selectRaw,
    который позволяет использовать сырые SQL-выражения для выборки
  • метод latest,
    который сортирует по полю 'created_at' по убыванию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить