如何在 Laravel 中检查数据库连接?


Laravel 数据库配置存储在 config/database.php 文件中。此文件中列出了数据库配置列表。默认情况下,您需要告诉 Laravel 您将要使用的数据库。

默认使用的数据库是 mysql,我们将坚持使用它并检查与 mysql 的数据库连接。

/*
|--------------------------------------------------------------------------
| Default Database Connection Name
|--------------------------------------------------------------------------
| Here you may specify which of the database connections below you wish
| to use as your default connection for all database work. Of course
| you may use many connections at once using the Database library.
|
*/
'default' => env('DB_CONNECTION', 'mysql'),

`.env` 文件包含数据库的环境配置,如下所示:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=

当您开始使用数据库时,请确保在 `.env` 文件中输入所有有效的数据库连接到 mysql 的详细信息。让我们尝试一个简单的示例来演示数据库连接。

示例 1

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class StudentController extends Controller{ public function index() { try { $dbconnect = DB::connection()->getPDO(); $dbname = DB::connection()->getDatabaseName(); echo "Connected successfully to the database. Database name is :".$dbname; } catch(Exception $e) { echo "Error in connecting to the database"; } } }

输出

以上代码的输出为:

Connected successfully to the database. Database name is :test

示例 2

另一种方法是在启动 Laravel 时测试数据库连接。您可以将数据库连接代码添加到 app/Providers/AppServiceProvider 中的 `boot()` 方法中,如下所示:

/** * Bootstrap any application services. * * @return void */ public function boot(){ try { DB::connection()->getPDO(); dump('Database is connected. Database Name is : ' . DB::connection()->getDatabaseName()); } catch (Exception $e) { dump('Database connection failed'); } }

现在,当您执行 `php artisan serve` 时,您应该会看到数据库连接成功或失败的消息,如下面的屏幕截图所示:

但是,上述方法的缺点是您也会在视图中看到它,例如:

示例 3

另一种解决方法是我们可以创建一个自定义命令,并在其中添加数据库检查代码,并在需要时使用它。要创建自定义命令,请使用以下命令:

php artisan make:command testdbconnection

输出

以上代码的输出为:

C:\xampp\htdocs\laraveltest>php artisan make:command testdbconnection
Console command created successfully.

C:\xampp\htdocs\laraveltest>

testdbconnection 文件将位于 app/console/commands 目录中。

testdbconnection.php

<?php namespace App\Console\Commands; use Illuminate\Console\Command; use DB; class testdbconnection extends Command{ /** * The name and signature of the console command. * @var string */ protected $signature = 'testdbconnection'; /** * The console command description. * @var string */ protected $description = 'Testing DB connection'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return int */ public function handle() { try { DB::connection()->getPDO(); dump('Database is connected. Database Name is : ' . DB::connection()->getDatabaseName()); } catch (Exception $e) { dump('Database connection failed'); } } }

更改命令名称、描述,并将数据库连接代码添加到 `handle()` 方法中,如上所示。现在打开 `kernel.php` 文件,并在其中添加以下行:

protected $commands = [ Commands\testdbconnection::class ];

现在您可以测试您的命令,如下所示:

C:\xampp\htdocs\laraveltest>php artisan testdbconnection
"Database is connected. Database Name is : test"

C:\xampp\htdocs\laraveltest>

更新于:2022年8月30日

22K+ 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告