Класс DB
Класс DB в Laravel предоставляет доступ к Query Builder - мощному инструменту для работы с базой данных. Он позволяет выполнять запросы к таблицам без использования Eloquent ORM. Основные методы: table - выбор таблицы, select - выполнение SELECT-запроса, insert - вставка записей, update - обновление записей, delete - удаление записей. Также класс поддерживает транзакции и выполнение сырых запросов.
Синтаксис
<?php
use Illuminate\Support\Facades\DB;
// Базовое использование
$res = DB::table($table)->get();
?>
Пример выбора записей
Давайте получим все записи из таблицы users:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class UserController extends Controller
{
public function index()
{
$res = DB::table('users')->get();
foreach ($res as $user) {
echo $user->name;
}
}
}
?>
Результат выполнения кода:
["user 1", "user 2", "user 3"]
Пример вставки записи
Давайте добавим нового пользователя в таблицу users:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class UserController extends Controller
{
public function store()
{
$id = DB::table('users')->insertGetId([
'name' => 'John Doe',
'email' => 'john@example.com',
'created_at' => now()
]);
echo "User created with id: $id";
}
}
?>
Результат выполнения кода:
"User created with id: 5"
Пример обновления записи
Давайте обновим email пользователя с id равным 1:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class UserController extends Controller
{
public function update()
{
$affected = DB::table('users')
->where('id', 1)
->update([
'email' => 'newemail@example.com',
'updated_at' => now()
]);
echo "Updated rows: $affected";
}
}
?>
Результат выполнения кода:
"Updated rows: 1"
Пример удаления записи
Давайте удалим пользователя с id равным 3:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class UserController extends Controller
{
public function destroy()
{
$deleted = DB::table('users')
->where('id', 3)
->delete();
echo "Deleted rows: $deleted";
}
}
?>
Результат выполнения кода:
"Deleted rows: 1"
Пример выполнения сырого запроса
Давайте выполним произвольный SQL-запрос с помощью метода select:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class UserController extends Controller
{
public function rawQuery()
{
$res = DB::select('SELECT * FROM users WHERE id > ?', [1]);
foreach ($res as $user) {
echo $user->name;
}
}
}
?>
Результат выполнения кода:
["user 2", "user 3", "user 4"]
Пример использования транзакции
Давайте выполним несколько операций в транзакции:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class UserController extends Controller
{
public function transaction()
{
DB::transaction(function () {
DB::table('users')
->where('id', 1)
->update(['name' => 'Updated Name']);
DB::table('logs')->insert([
'action' => 'user_updated',
'user_id' => 1,
'created_at' => now()
]);
});
echo "Transaction completed successfully";
}
}
?>
Результат выполнения кода:
"Transaction completed successfully"
Смотрите также
-
метод
table,
который начинает построение запроса к таблице -
метод
select,
который выполняет SELECT-запрос -
метод
transaction,
который выполняет операции в транзакции -
метод
raw,
который создает выражение для сырых SQL-запросов