Laravel 5.1 - vérification d'une connexion à une base de données

j'essaie de vérifier si une base de données est connectée dans Laravel.

j'ai parcouru la documentation et je n'ai rien trouvé. La chose la plus proche que j'ai trouvée est , mais cela ne résout pas mon problème.

j'ai trois instances de MySQL qui sont configurées sur des machines différentes. Voici une version simplifiée de ce que j'essaie de réaliser.

  1. si la base de données 1 est connectée, sauvegardez les données
  2. si la base de données 1 n'est pas connecté, vérifiez si la base de données 2 est connecté
  3. Si la base de données 2 est connecté enregistrer les données
  4. si la base de données 2 n'est pas connectée, vérifiez si la base de données 3 est connectée
  5. si la base de données 3 est connectée, sauvegardez les données

Pour être clair, est-il un moyen de vérifier qu'une base de données est connecté à Laravel 5.1?

21
demandé sur Enijar 2015-10-30 12:35:00

5 réponses

essayez juste d'obtenir l'instance de PDO sous-jacente. Si échoue, alors Laravel n'a pas pu se connecter à la base de données!

// Test database connection
try {
    DB::connection()->getPdo();
} catch (\Exception $e) {
    die("Could not connect to the database.  Please check your configuration. error:" . $e );
}
58
répondu alexw 2018-06-22 09:51:20

Vous pouvez utiliser alexw solution avec L'Artisan. Exécutez les commandes suivantes en ligne de commande.

php artisan tinker
DB::connection()->getPdo();

si la connexion est OK, vous devriez voir

CONNECTION_STATUS: "Connection OK; waiting to send.",

près de la fin de la réponse.

17
répondu Luboš Miřatský 2018-01-03 08:13:33

Vous pouvez utiliser ceci, dans une méthode de controller ou dans une fonction inline d'une route:

   try {
        DB::connection()->getPdo();
        if(DB::connection()->getDatabaseName()){
            echo "Yes! Successfully connected to the DB: " . DB::connection()->getDatabaseName();
        }else{
            die("Could not find the database. Please check your configuration.");
        }
    } catch (\Exception $e) {
        die("Could not open connection to database server.  Please check your configuration.");
    }
6
répondu Luca C. 2018-09-26 07:32:13

Vous pouvez utiliser cette requête pour vérifier la connexion à la base de données:

if(DB::connection()->getDatabaseName())
   {
     echo "connected successfully to database ".DB::connection()->getDatabaseName();
   }
2
répondu Dawlatzai Ghousi 2016-08-18 13:18:24

Une Autre Approche:

quand Laravel essaie de se connecter à la base de données, si la connexion échoue ou si elle trouve des erreurs, elle renvoie un PDOException erreur. Nous pouvons attraper cette erreur et rediriger l'action

ajouter le code suivant dans le app/filtes.php fichier.

App::error(function(PDOException $exception)
{
    Log::error("Error connecting to database: ".$exception->getMessage());

    return "Error connecting to database";
});

J'espère que c'est utile.

0
répondu ArtisanBay 2015-10-30 10:59:51