Метод statement
Метод statement класса DB предназначен для выполнения SQL-запросов, которые изменяют структуру базы данных или выполняют операции, не возвращающие результирующий набор данных. Первым параметром передаётся строка с SQL-запросом, вторым - массив параметров для привязки. Метод возвращает количество затронутых строк.
В отличие от методов select и insert, метод statement используется для выполнения запросов, которые не предполагают получение данных обратно. Он идеально подходит для миграций, очистки таблиц, создания временных таблиц и выполнения хранимых процедур.
Синтаксис
<?php
DB::statement($query, $bindings);
?>
Пример
Выполним запрос на создание новой таблицы для хранения логов:
<?php
use Illuminate\Support\Facades\DB;
$sql = 'CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
message TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)';
$res = DB::statement($sql);
echo $res;
?>
Результат выполнения кода:
"true"
Пример
Очистим таблицу "users" от всех записей с помощью SQL-команды TRUNCATE:
<?php
use Illuminate\Support\Facades\DB;
$res = DB::statement('TRUNCATE TABLE users');
echo $res;
?>
Результат выполнения кода:
"true"
Пример
Изменим структуру таблицы, добавив новое поле "phone" типа VARCHAR:
<?php
use Illuminate\Support\Facades\DB;
$res = DB::statement('ALTER TABLE users ADD COLUMN phone VARCHAR(20)');
echo $res;
?>
Результат выполнения кода:
"true"
Пример
Выполним обновление данных с использованием привязки параметров для безопасности:
<?php
use Illuminate\Support\Facades\DB;
$user_id = 5;
$status = 'active';
$res = DB::statement('UPDATE users SET status = ? WHERE id = ?', [$status, $user_id]);
echo $res;
?>
Результат выполнения кода:
"1"