web-dev-qa-db-fra.com

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 à Laravel.

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

J'ai trois instances de MySQL configurées sur différentes machines. Vous trouverez ci-dessous 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 dessus
  2. Si la base de données 1 n'est pas connectée, vérifiez si la base de données 2 est connectée
  3. Si la base de données 2 est connectée, sauvegardez les données dessus
  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 dessus

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

34
Enijar

Essayez simplement d'obtenir l'instance PDO sous-jacente. Si cela é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 );
}
92
alexw

Vous pouvez utiliser la solution alexw avec l'Artisan. Exécutez les commandes suivantes dans la ligne de commande.

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

Si la connexion est correcte, vous devriez voir

CONNECTION_STATUS: "Connexion OK; en attente d'envoi.",

vers la fin de la réponse.

44
Luboš Miřatský

Vous pouvez l'utiliser dans une méthode de contrôleur ou dans une fonction en ligne d'un itinéraire:

   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.");
    }
10
Luca C.

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

$pdo = DB::connection()->getPdo();

if($pdo)
   {
     echo "Connected successfully to database ".DB::connection()->getDatabaseName();
   } else {
     echo "You are not connected to database";
   }

Pour plus d'informations, vous pouvez consulter cette page https://laravel.com/docs/5.0/database .

3
Dawlatzai Ghousi

Une autre approche:

Lorsque Laravel tente de se connecter à la base de données, si la connexion échoue ou s’il trouve des erreurs, il renvoie une erreur PDOException. Nous pouvons intercepter cette erreur et rediriger l’action.

Ajoutez 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
ArtisanBay