Laravel 5.1 – Проверка подключения к базе данных

Я пытаюсь проверить, подключена ли база данных в Laravel.

Я просмотрел документацию и ничего не могу найти. Самое близкое, что я нашел, это , но это не решает мою проблему.

У меня есть три экземпляра MySQL, которые настроены на разных машинах. Ниже приведен упрощенный вариант того, чего я пытаюсь достичь.

  1. Если база данных 1 подключена, сохраните данные на нее
  2. Если база данных 1 не подключена, проверьте, подключена ли база данных 2
  3. Если база данных 2 подключена, сохраните данные на нее
  4. Если база данных 2 не подключена, проверьте, подключена ли база данных 3
  5. Если подключена база данных 3, сохраните данные для нее

Чтобы быть ясным, есть ли способ проверить, что база данных подключена в 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"; }); 

Надеюсь, это полезно.