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

Метод raw

Метод raw класса DB применяется для создания сырых SQL-выражений, которые не экранируются и не обрабатываются как параметры. В отличие от обычных методов, где значения автоматически экранируются для защиты от SQL-инъекций, метод raw позволяет вставлять чистый SQL-код в запрос. Это полезно, когда требуется использовать функции базы данных, операторы или сложные выражения, которые невозможно выразить через стандартные методы построителя запросов. Первым и единственным параметром передаётся строка с SQL-выражением.

Синтаксис

<?php DB::raw($expression); ?>

Пример с функцией базы данных

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

<?php use Illuminate\Support\Facades\DB; use AppModelsArticle; $articles = Article::orderBy(DB::raw('LENGTH(title)'))->get(); foreach ($articles as $article) { echo $article->title . "\n"; } ?>

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

"abc" "abcde" "abcdefgh" "abcdefghijk"

Пример с арифметическим выражением

Давайте выберем пользователей, у которых сумма полей views и likes больше 100:

<?php use Illuminate\Support\Facades\DB; use AppModelsUser; $users = User::where(DB::raw('views + likes'), '>', 100)->get(); foreach ($users as $user) { echo $user->name . "\n"; } ?>

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

"user" "user 1" "user 4"

Пример с условным выражением CASE

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

<?php use Illuminate\Support\Facades\DB; use AppModelsArticle; $articles = Article::select( 'title', DB::raw(" CASE WHEN views > 1000 THEN 'popular' WHEN views > 100 THEN 'regular' ELSE 'new' END as popularity ") )->get(); foreach ($articles as $article) { echo $article->title . ' - ' . $article->popularity . "\n"; } ?>

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

"article 1 - popular" "article 2 - regular" "article 3 - new" "article 4 - popular"

Пример с конкатенацией строк

Давайте сформируем полное имя пользователя, объединив поля first_name и last_name через пробел:

<?php use Illuminate\Support\Facades\DB; use AppModelsUser; $users = User::select( DB::raw("CONCAT(first_name, ' ', last_name) as full_name") )->get(); foreach ($users as $user) { echo $user->full_name . "\n"; } ?>

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

"John Doe" "Jane Smith" "Bob Johnson"

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

  • метод select,
    который выполняет SQL-запрос и возвращает массив результатов
  • метод statement,
    который выполняет SQL-запрос без возврата результатов
  • метод selectRaw,
    который добавляет сырое выражение в секцию SELECT
  • метод whereRaw,
    который добавляет сырое условие в секцию WHERE
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить