Laravel 5.1 - Проверка подключения к базе данных
Я пытаюсь проверить, подключена ли база данных в Laravel.
Я просмотрел документацию и ничего не могу найти. Самое близкое, что я нашел, это this, но это не решает мою проблему.
У меня есть три экземпляра MySQL, которые настроены на разных машинах. Ниже приведен упрощенный вариант того, чего я пытаюсь достичь.
- Если база данных 1 подключена, сохраните данные в ней
- Если база данных 1 не подключена, проверьте, подключена ли база данных.
- Если база данных 2 подключена, сохраните данные в ней
- Если база данных 2 не подключена, проверьте, подключена ли база данных.
- Если подключена база данных 3, сохраните данные в ней
Чтобы быть ясным, есть ли способ проверить, что база данных подключена в Laravel 5.1?
Ответы
Ответ 1
Попробуйте просто получить базовый экземпляр PDO. Если это не удается, Laravel не смог подключиться к базе данных!
// Test database connection
try {
DB::connection()->getPdo();
} catch (\Exception $e) {
die("Could not connect to the database. Please check your configuration.");
}
Ответ 2
Вы можете использовать этот запрос для проверки соединения с базой данных:
if(DB::connection()->getDatabaseName())
{
echo "connected successfully to database ".DB::connection()->getDatabaseName();
}
Ответ 3
Вы можете использовать это в методе контроллера или встроенной функции маршрута:
try {
DB::connection()->getPdo();
if(DB::connection()->getDatabaseName()){
echo "Yes! Successfully connected to the DB: " . DB::connection()->getDatabaseName();
}
} catch (\Exception $e) {
die("Could not connect to the database. Please check your configuration.");
}
Ответ 4
Вы можете использовать решение alexw с Artisan. Выполните следующие команды в командной строке.
php artisan tinker
DB::connection()->getPdo();
Если соединение в порядке, вы должны увидеть
CONNECTION_STATUS: "Подключение в порядке, ожидание отправки".
ближе к концу ответа.
Ответ 5
Другой подход:
Когда Laravel пытается подключиться к базе данных, если соединение терпит неудачу или если он обнаружит какие-либо ошибки, он вернет ошибку PDOException
. Мы можем поймать эту ошибку и перенаправить действие
Добавьте следующий код в файл app/filtes.php
.
App::error(function(PDOException $exception)
{
Log::error("Error connecting to database: ".$exception->getMessage());
return "Error connecting to database";
});
Надеюсь, что это будет полезно.