Подтвердить что ты не робот

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

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

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

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

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

Чтобы быть ясным, есть ли способ проверить, что база данных подключена в Laravel 5.1?

4b9b3361

Ответ 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";
});

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