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