
Подключение к базе данных в Laravel управляется через несколько ключевых файлов и переменных. Основным источником настроек является файл .env, где указываются DB_CONNECTION, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME и DB_PASSWORD. Эти значения определяют, к какому серверу и базе будет выполняться подключение, а также учетные данные для авторизации.
Для более тонкой настройки используется файл config/database.php. Он позволяет создавать несколько подключений к разным базам, настраивать драйверы MySQL, PostgreSQL, SQLite и SQL Server, а также изменять параметры соединения, такие как таймаут, префиксы таблиц и режим строгой проверки типов данных. Любые изменения в этом файле автоматически учитываются Laravel при работе с Eloquent и Query Builder.
Для проверки работоспособности подключения можно использовать команды php artisan migrate:status или php artisan db:show, которые позволяют убедиться, что приложение корректно подключается к нужной базе. При необходимости Laravel позволяет переключать соединения в коде на лету, используя методы DB::connection(‘имя_соединения’), что удобно для работы с несколькими базами или при миграции данных.
Файл.env и переменные для подключения к базе
Файл .env в Laravel хранит ключевые переменные для подключения к базе данных. Изменение этих значений напрямую влияет на работу Eloquent и Query Builder. Для стандартного подключения к MySQL используются следующие переменные:
| Переменная | Назначение | Пример значения |
|---|---|---|
| DB_CONNECTION | Выбор драйвера базы данных | mysql |
| DB_HOST | Адрес сервера базы | 127.0.0.1 |
| DB_PORT | Порт подключения | 3306 |
| DB_DATABASE | Имя базы данных | laravel_db |
| DB_USERNAME | Имя пользователя для доступа | root |
| DB_PASSWORD | Пароль пользователя | secret |
Для SQLite достаточно указать путь к файлу базы через переменную DB_DATABASE. При изменении этих значений рекомендуется очищать кэш конфигурации командой php artisan config:clear, чтобы новые настройки вступили в силу.
Laravel позволяет использовать несколько файлов .env для разных окружений. Например, .env.testing для тестовой среды и .env.production для боевой. Переключение между ними осуществляется через серверные переменные окружения или при запуске artisan-команд с указанием нужного файла.
Настройка драйвера базы данных в config/database.php

Файл config/database.php отвечает за выбор драйвера базы данных и тонкую настройку подключения. В Laravel поддерживаются следующие драйверы по умолчанию:
- mysql – для MySQL и MariaDB;
- pgsql – для PostgreSQL;
- sqlite – для локальных файловых баз;
- sqlsrv – для Microsoft SQL Server.
Чтобы изменить драйвер, необходимо в массиве ‘default’ указать имя выбранного соединения:
- Откройте config/database.php.
- Найдите ключ ‘default’ и установите нужный драйвер, например: ‘default’ => env(‘DB_CONNECTION’, ‘mysql’).
- Настройте параметры выбранного драйвера в соответствующем массиве внутри connections.
Для MySQL можно изменить:
- host – адрес сервера;
- port – порт подключения;
- database – имя базы;
- username и password – учетные данные;
- charset и collation – кодировка и сортировка;
- strict – режим строгой проверки типов данных.
Любые изменения в config/database.php требуют очистки кэша конфигурации командой php artisan config:clear, чтобы приложение использовало обновленные настройки при подключении к базе.
Конфигурация параметров хоста, порта и имени базы

Подключение к базе в Laravel зависит от правильной настройки хоста, порта и имени базы данных. Эти параметры задаются через переменные в файле .env и используются в config/database.php.
DB_HOST указывает адрес сервера базы. Для локальной разработки обычно используется 127.0.0.1 или localhost. Для удаленных серверов следует прописывать IP или доменное имя.
DB_PORT определяет порт подключения. По умолчанию для MySQL это 3306, для PostgreSQL 5432. Если сервер использует нестандартный порт, значение необходимо указать явно.
DB_DATABASE задает имя базы данных, к которой будет происходить подключение. Оно должно совпадать с существующей базой на сервере. При работе с несколькими базами рекомендуется создавать отдельные подключения в config/database.php с разными значениями database.
После изменения этих параметров необходимо выполнить php artisan config:clear для обновления кэша конфигурации, чтобы приложение корректно использовало новые настройки.
Определение имени пользователя и пароля для подключения

Для подключения Laravel к базе данных используются переменные DB_USERNAME и DB_PASSWORD в файле .env. Имя пользователя должно существовать на сервере базы и иметь права на выбранную базу данных.
Пароль указывается в переменной DB_PASSWORD и должен соответствовать учетной записи пользователя. При использовании пустого пароля необходимо явно указать пустую строку: DB_PASSWORD=.
Для разных сред разработки и продакшена рекомендуется создавать отдельные учетные записи с ограниченными правами. Это позволяет безопасно подключаться к базе и минимизирует риск случайного изменения данных.
После изменения имени пользователя или пароля в .env следует выполнить команду php artisan config:clear, чтобы Laravel применил новые настройки при подключении.
Использование нескольких подключений к разным базам

Laravel позволяет создавать несколько соединений в файле config/database.php. Каждое соединение описывается отдельным массивом в ‘connections’ с указанием драйвера, хоста, порта, имени базы, пользователя и пароля.
Для использования нескольких баз в коде применяется метод DB::connection(‘имя_соединения’). Например, для выборки данных из второй базы:
$users = DB::connection(‘mysql_secondary’)->table(‘users’)->get();
Переключение между подключениями удобно для миграций, репликации или чтения/записи в разные базы. При этом основное соединение остается тем, что указано в ключе ‘default’, а дополнительные подключаются по имени.
Рекомендуется задавать отдельные переменные .env для каждой базы, чтобы хранить DB_HOST_SECONDARY, DB_DATABASE_SECONDARY, DB_USERNAME_SECONDARY и DB_PASSWORD_SECONDARY, а затем ссылаться на них в config/database.php.
Настройка соединения через SQLite

Для подключения Laravel к базе SQLite используется драйвер sqlite. Основной параметр, который необходимо указать, это путь к файлу базы в переменной DB_DATABASE в файле .env:
DB_CONNECTION=sqlite
DB_DATABASE=/полный/путь/к/базе/database.sqlite
Если файл базы отсутствует, его необходимо создать вручную, например командой touch database/database.sqlite. Laravel автоматически создаст таблицы при выполнении миграций.
В config/database.php для SQLite достаточно оставить минимальный набор параметров: driver и database. Порт, хост, пользователь и пароль не используются, так как SQLite работает с локальными файлами.
Для тестирования подключения рекомендуется выполнить команду php artisan migrate:status, чтобы убедиться, что Laravel видит файл базы и может выполнять операции с таблицами.
Проверка подключения с помощью artisan команд
Laravel предоставляет несколько команд artisan для проверки состояния подключения к базе данных. Они позволяют убедиться, что приложение корректно работает с выбранной базой.
- php artisan db:show – показывает текущее активное подключение и параметры соединения.
- php artisan tinker – интерактивная оболочка для проверки запросов к базе. Например: DB::connection()->getPdo() возвращает объект PDO, если соединение успешно.
Для разных подключений можно использовать метод DB::connection(‘имя_соединения’) внутри tinker или скриптов. Это помогает проверять вторичные базы или тестовые среды.
Если команды возвращают ошибки, рекомендуется проверить значения .env, очистить кэш конфигурации php artisan config:clear и убедиться, что сервер базы доступен по указанным хосту и порту.
Изменение подключения на лету в коде приложения
Laravel позволяет переключать подключение к базе данных прямо в коде с помощью метода DB::connection(‘имя_соединения’). Это удобно при работе с несколькими базами или при миграции данных.
Пример использования для выборки данных из вторичной базы:
$orders = DB::connection(‘mysql_secondary’)->table(‘orders’)->get();
Для моделей Eloquent можно определить конкретное соединение через свойство $connection:
class User extends Model { protected $connection = ‘mysql_secondary’; }
Также возможно динамически менять соединение через метод setConnection:
$user = new User(); $user->setConnection(‘mysql_secondary’);
После изменения подключения все запросы к этой модели или через DB будут выполняться на выбранной базе, не затрагивая основное соединение, указанное в config/database.php.
Вопрос-ответ:
Где в Laravel находится основная настройка подключения к базе данных?
Основная настройка подключения находится в файле .env, где задаются переменные DB_CONNECTION, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME и DB_PASSWORD. Эти значения определяют, к какой базе будет выполняться подключение и под какими учетными данными.
Как проверить, что Laravel корректно подключается к базе?
Для проверки можно использовать команды artisan. php artisan migrate:status покажет статус миграций, а php artisan db:show отображает параметры активного соединения. Также можно использовать tinker: DB::connection()->getPdo() вернет объект PDO при успешном подключении.
Можно ли в Laravel подключаться сразу к нескольким базам?
Да, в config/database.php можно создать несколько соединений в массиве ‘connections’. Для работы с вторичной базой используется DB::connection(‘имя_соединения’). Модели Eloquent также поддерживают указание конкретного соединения через свойство $connection.
Как настроить SQLite для работы с Laravel?
Для SQLite в .env нужно указать DB_CONNECTION=sqlite и полный путь к файлу базы через DB_DATABASE. Файл базы можно создать вручную, например командой touch database/database.sqlite. В config/database.php достаточно указать драйвер и путь к файлу, остальные параметры, такие как хост и порт, не используются.
Можно ли менять подключение к базе на лету в коде?
Да, для динамического переключения используется метод DB::connection(‘имя_соединения’). Для моделей Eloquent можно задать свойство $connection или метод setConnection, чтобы все запросы выполнялись на выбранной базе, не затрагивая основное соединение.
Где находятся настройки подключения к базе в Laravel и как их изменить?
Настройки подключения хранятся в файле .env. Для каждого соединения указываются переменные DB_CONNECTION, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME и DB_PASSWORD. Любые изменения требуют очистки кэша командой php artisan config:clear, чтобы Laravel применил новые параметры.
Как проверить работоспособность подключения к базе в Laravel?
Для проверки можно использовать artisan-команды: php artisan migrate:status показывает состояние миграций, а php artisan db:show выводит параметры текущего соединения. В интерактивной оболочке tinker можно выполнить DB::connection()->getPdo() — если соединение успешно, вернется объект PDO, иначе будет ошибка подключения.
