📅  最后修改于: 2023-12-03 14:50:07.100000             🧑  作者: Mango
在一些情况下,我们可能需要在 Laravel 应用程序中使用多个数据库。本文将介绍如何在 Laravel 8 中实现具有多个数据库的应用程序。
首先,我们需要创建要使用的数据库。我们可以使用 MySQL、PostgreSQL、SQLite 或 Microsoft SQL Server。在这里,我们将创建两个 MySQL 数据库,一个用于应用程序数据,另一个用于身份验证。
mysql> CREATE DATABASE my_app_db;
mysql> CREATE DATABASE my_auth_db;
接下来,我们需要在 .env
文件中配置我们的数据库。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_app_db
DB_USERNAME=root
DB_PASSWORD=
AUTH_DB_CONNECTION=mysql
AUTH_DB_HOST=127.0.0.1
AUTH_DB_PORT=3306
AUTH_DB_DATABASE=my_auth_db
AUTH_DB_USERNAME=root
AUTH_DB_PASSWORD=
接下来,我们需要在 config/database.php
文件中创建两个数据库连接:一个用于应用程序数据,另一个用于身份验证。
'connections' => [
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'my_app_db'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
'auth' => [
'driver' => 'mysql',
'url' => env('AUTH_DATABASE_URL'),
'host' => env('AUTH_DB_HOST', '127.0.0.1'),
'port' => env('AUTH_DB_PORT', '3306'),
'database' => env('AUTH_DB_DATABASE', 'my_auth_db'),
'username' => env('AUTH_DB_USERNAME', 'root'),
'password' => env('AUTH_DB_PASSWORD', ''),
'unix_socket' => env('AUTH_DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
],
现在我们已经创建了两个数据库连接,接下来我们需要在应用程序中使用它们。
我们可以使用 Laravel 预定义的方式连接到任何一个数据库连接。
\DB::connection('mysql')->table('users')->get();
\DB::connection('auth')->table('auth_users')->get();
我们可以使用 Laravel 提供的 Model
类来连接任何一个数据库连接。
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $connection = 'mysql';
protected $table = 'users';
}
namespace App\Models\Auth;
use Illuminate\Database\Eloquent\Model;
class AuthUser extends Model
{
protected $connection = 'auth';
protected $table = 'auth_users';
}
现在,我们已经成功地在 Laravel 8 中实现了多个数据库的应用程序。