С помощью класса DB можно выполнять любые запросы к базе данных. Рассмотрим самые востребованные.
Выполнение запроса SELECT
Метода "select" первым аргументом принимает SQL запрос. Вторым аргументом - связки параметров для запроса в массиве. Такая привязка параметров позволяет сделать защиту от SQL инъекций. К примеру, выберем из базы все записи для пользователя с id равным 1:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
class MouseController extends Controller{
public function index(){
$users = DB::select('select * from users where id = :id', ['id' => 1]);
return view('user.index', ['users' => $users]);
}
}
?>
Для обозначения привязки элементов вместо названия ключа массива вопроса можно использовать знак вопроса. Но при этом надо подстановка будет последовательной. Поэтому если есть несколько знаков вопроса, то будут подставлены несколько значений из массива:
<?php
DB::select('select * from users where id = ? and login = ?', [1, 'admin']);
?>
Результат выполнения метода "select" возвращается в виде объекта
StdClass, позволяя делать простейший обход через foreach:
<?php
foreach ($users as $user) {
echo $user->name;
}
?>
Выполнение INSERT, UPDATE
Методы для вставки "insert" и обновления "update" записей в базу применяются так:
<?php
DB::insert('insert into users (id, login) values (?, ?)', [1, 'admin']);
DB::update('update users set votes = 100 where name = ?', ['John']);
?>
При этом метод обновления значений "update" возвращает количество обновлённых строк (число).
Выполнение DELETE, STATEMENT
Метод "delete" удаляет записи из базы данных. При этом возвращает количество удалённых записей. Попробуем удалить пользователя с id равным 1:
<?php
$cnt = DB::delete('delete from users where id = ?', [1]);
?>
Если возвращать количество не нужно, то можно воспользоваться методом "statement":
<?php
DB::statement('delete from users where id = ?', [1]);
?>
Метод statement можно использовать для любой операции, возвращать данные которой не нужно.