Laravel 8. Часть 3. База данных

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 Фасад предоставляет методы для каждого типа запроса: selectupdateinsertdelete, и 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');

Соединение с базой данных готово. О том, как запустить и просмотреть проект следующая статья.

Один комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *