Laravel支持多数据库连接配置,通过在config/database.php中定义如mysql_secondary连接,并在.env文件添加对应环境变量,可在Eloquent模型中设置$connection属性指定连接,或使用DB::connection('mysql_secondary')在查询构造器中切换连接,支持事务和动态切换,适用于主从分离等场景。

在Laravel中配置和使用多个数据库连接非常灵活,适用于需要操作不同数据库(如主从分离、微服务数据隔离或跨系统集成)的场景。你只需在配置文件中定义多个连接,然后在模型或查询中指定使用哪一个即可。
Laravel的数据库配置位于 config/database.php 文件中。默认情况下,它支持多种数据库驱动,并允许你定义多个连接。
例如,你想添加一个名为 mysql_secondary 的额外MySQL连接:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
// 其他配置...
],
'mysql_secondary' => [
'driver' => 'mysql',
'host' => env('DB_SECONDARY_HOST', '192.168.1.100'),
'port' => env('DB_SECONDARY_PORT', '3306'),
'database' => env('DB_SECONDARY_DATABASE', 'secondary_db'),
'username' => env('DB_SECONDARY_USERNAME', 'user'),
'password' => env('DB_SECONDARY_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
记得在 .env 文件中添加对应的环境变量:
DB_SECONDARY_HOST=192.168.1.100 DB_SECONDARY_PORT=3306 DB_SECONDARY_DATABASE=secondary_db DB_SECONDARY_USERNAME=user DB_SECONDARY_PASSWORD=secret
如果你有一个模型需要使用 mysql_secondary 连接,可以在模型类中设置 $connection 属性:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class SecondaryUser extends Model
{
protected $connection = 'mysql_secondary';
protected $table = 'users';
}
这样,所有对该模型的操作都会自动使用指定的数据库连接。
一个类似淘宝助理、ebay助理的客户端程序,用来方便的在本地处理商店数据,并能够在本地商店、网上商店和第三方平台之间实现数据上传下载功能的工具。功能说明如下:1.连接本地商店:您可以使用ShopEx助理连接一个本地安装的商店系统,这样就可以使用助理对本地商店的商品数据进行编辑等操作,并且数据也将存放在本地商店数据库中。默认是选择“本地未安装商店”,本地还未安
0
如果只是临时使用某个连接,可以直接在查询时指定:
// 使用默认连接
$users = DB::table('users')->get();
// 使用 mysql_secondary 连接
$secondaryUsers = DB::connection('mysql_secondary')->table('users')->get();
也可以在事务中使用特定连接:
DB::connection('mysql_secondary')->transaction(function () {
DB::connection('mysql_secondary')->table('logs')->insert([
'action' => 'user_login',
'created_at' => now()
]);
});
某些场景下,你可能需要根据用户、租户或配置动态选择数据库。可以通过修改模型实例的连接来实现:
$userModel = new SecondaryUser();
$userModel->setConnection('mysql_secondary');
$users = $userModel->get();
// 记得恢复,避免影响后续调用
$userModel->setConnection(null);
或者,在服务中注入连接名称:
public function getUsersFrom($connectionName)
{
return DB::connection($connectionName)->table('users')->get();
}
基本上就这些。Laravel对多数据库的支持很清晰,关键是把配置写对,然后在模型或查询中明确指定连接名。不复杂但容易忽略细节,比如环境变量拼写或连接名大小写。
以上就是Laravel如何配置和使用多个数据库连接的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号