Laravel поддерживает три способа взаимодействия: используя необработанный SQL, свободный конструктор запросов и Eloquent ORM.
В настоящее время Laravel обеспечивает поддержку четырех типов баз данных:
- MySQL 5.7+
- PostgreSQL 9.6+
- SQLite 3.8.8+
- SQL Server 2017+
Соединение с Базой Данных
Для соединения с базой данных (далее БД) у Laravel есть конфигурационный файл database.php находящийся в \config\database.php Здесь прописываем логин и пароль для соединения с БД.
Создадим базу данных по названию проекта. По умолчанию используем mysql базу
После этого создадём таблицу миграций:
php artisan migrate:install
Конфигурация SQLite
Базы данных SQLite содержатся в одном файле в вашей файловой системе. Вы можете создать новую базу данных SQLite , используя touch
команду в терминале: touch database/database.sqlite
. После создания базы данных вы можете легко настроить переменные среды так, чтобы они указывали на эту базу данных, указав абсолютный путь к базе данных в DB_DATABASE
переменной среды:
DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/database.sqlite
Чтобы включить ограничения внешнего ключа для соединений SQLite, вы должны установить для DB_FOREIGN_KEYS
переменной среды значение true
:
DB_FOREIGN_KEYS=true
Выполнение SQL-запросов
После того, как вы настроили соединение с базой данных, вы можете запускать запросы с помощью DB
фасада. DB
Фасад предоставляет методы для каждого типа запроса: select
, update
, insert
, delete
, и statement
.
Запрос выборки SELECT
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
class UserController extends Controller
{
/**
* Show a list of all of the application's users.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$users = DB::select('select * from users where active = ?', [1]);
return view('user.index', ['users' => $users]);
}
}
Первым аргументом, переданным select
методу, является запрос SQL, а вторым аргументом – любые привязки параметров, которые необходимо связать с запросом. Обычно это значения where
ограничений предложения. Привязка параметров обеспечивает защиту от внедрения SQL.
select
Метод всегда будет возвращать array
результаты. Каждый результат в массиве будет stdClass
объектом PHP, представляющим запись из базы данных:
use Illuminate\Support\Facades\DB;
$users = DB::select('select * from users');
foreach ($users as $user) {
echo $user->name;
}
Впрочем чаще будем пользоваться запросами отталкиваясь от созданной модели, например:
use App\Models\WorkDay;
...
WorkDay::where('date', '>=', $begin)->where('date', '<=', $end)->get();
Оператор вставки Insert
Чтобы выполнить insert
оператор, вы можете использовать insert
метод DB
фасада. Например select
, этот метод принимает запрос SQL в качестве первого аргумента и привязки в качестве второго аргумента:
use Illuminate\Support\Facades\DB;
DB::insert('insert into users (id, name) values (?, ?)', [1, 'Marc']);
Оператор обновления update
Этот update
метод следует использовать для обновления существующих записей в базе данных. Количество строк, затронутых оператором, возвращается методом:
use Illuminate\Support\Facades\DB;
$affected = DB::update(
'update users set votes = 100 where name = ?',
['Anita']
);
Оператор удаления
delete
Метод должен быть использован для удаления записей из базы данных. Например update
, количество затронутых строк будет возвращено методом:
use Illuminate\Support\Facades\DB;
$deleted = DB::delete('delete from users');
Выполнение оператор общего назначения
Некоторые операторы базы данных не возвращают никакого значения. Для этих типов операций вы можете использовать statement
метод на DB
фасаде:
DB::statement('drop table users');
Соединение с базой данных готово. О том, как запустить и просмотреть проект следующая статья.
Вино и женщины приносят нам,