Skip to content

6. База данных: Начало работы

1. Введение

Почти каждое современное веб-приложение взаимодействует с базой данных. Laravel делает работу с базами данных чрезвычайно простой, поддерживая различные базы данных с использованием чистого SQL, гибкого конструктора запросов и ORM Eloquent. В настоящее время Laravel официально поддерживает пять баз данных:

Кроме того, MongoDB поддерживается через пакет mongodb/laravel-mongodb, который официально поддерживается MongoDB. Дополнительную информацию можно найти в документации Laravel MongoDB.

1.1. Конфигурация

Конфигурация сервисов базы данных Laravel находится в файле конфигурации вашего приложения config/database.php. В этом файле вы можете определить все ваши подключения к базе данных, а также указать, какое подключение должно использоваться по умолчанию. Большинство параметров конфигурации в этом файле задаются значениями переменных окружения вашего приложения. Примеры для большинства поддерживаемых Laravel систем баз данных приведены в этом файле.

По умолчанию пример конфигурации окружения в Laravel готов к использованию с Laravel Sail, который представляет собой конфигурацию Docker для разработки приложений Laravel на локальной машине. Однако вы можете изменить конфигурацию базы данных в соответствии с вашими потребностями для локальной базы данных.

1.1.1. Конфигурация SQLite

Базы данных SQLite хранятся в одном файле на вашей файловой системе. Вы можете создать новую базу данных SQLite с помощью команды touch в терминале: touch database/database.sqlite. После создания базы данных вы можете легко настроить переменные окружения, указав абсолютный путь к базе данных в переменной окружения DB_DATABASE:

DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/database.sqlite

По умолчанию для подключений SQLite включены ограничения внешних ключей. Если вы хотите их отключить, установите переменную окружения DB_FOREIGN_KEYS в значение false:

DB_FOREIGN_KEYS=false
lightbulb

Если вы используете установщик Laravel для создания приложения Laravel и выбираете SQLite в качестве базы данных, Laravel автоматически создаст файл database/database.sqlite и выполнит стандартные миграции базы данных за вас.

1.1.2. Конфигурация Microsoft SQL Server

Чтобы использовать базу данных Microsoft SQL Server, убедитесь, что у вас установлены PHP-расширения sqlsrv и pdo_sqlsrv, а также все необходимые зависимости, такие как ODBC-драйвер Microsoft SQL.

1.1.3. Конфигурация с использованием URL

Обычно подключения к базе данных настраиваются с использованием нескольких значений конфигурации, таких как host, database, username, password и других. У каждого из этих параметров есть своя соответствующая переменная окружения. Это означает, что при настройке информации о подключении к базе данных на сервере в продакшене вам нужно управлять несколькими переменными окружения.

Некоторые облачные провайдеры баз данных, такие как AWS и Heroku, предоставляют единый "URL" базы данных, который содержит всю информацию о подключении в одной строке. Пример URL базы данных может выглядеть следующим образом:

mysql://root:password@127.0.0.1/forge?charset=UTF-8

Эти URL-адреса, как правило, следуют стандартной схеме:

driver://username:password@host:port/database?options

Для удобства Laravel поддерживает такие URL-адреса в качестве альтернативы настройке базы данных с использованием нескольких параметров конфигурации. Если указана опция конфигурации url (или соответствующая переменная окружения DB_URL), Laravel извлечет из нее информацию о подключении и учетных данных базы данных.

1.2. Чтение и запись подключений

Иногда может потребоваться использовать одно подключение к базе данных для операторов SELECT, а другое — для операторов INSERT, UPDATE и DELETE. Laravel упрощает эту задачу, гарантируя, что правильные подключения будут использоваться независимо от того, используете ли вы чистые SQL-запросы, конструктор запросов или ORM Eloquent.

Чтобы понять, как следует настраивать подключения для чтения и записи, рассмотрим следующий пример:

'mysql' => [
'read' => [
'host' => [
'192.168.1.1',
'196.168.1.2',
],
],
'write' => [
'host' => [
'196.168.1.3',
],
],
'sticky' => true,
 
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => env('DB_CHARSET', 'utf8mb4'),
'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],

Обратите внимание, что в массив конфигурации добавлены три ключа: read, write и sticky. Ключи read и write содержат массивы с единственным ключом host. Остальные параметры базы данных для подключений read и write будут объединены с основной конфигурацией mysql.