laravel支持多 数据库 连接配置,可在 config/database.php中添加多个连接如 mysql_second,并在。env 文件设置对应 环境变量 ;通过模型中定义 $connection 属性指定数据库,或使用 DB::connection() 动态切换连接;迁移和 Seeder 时可通过 –database 参数或 DB::connection 指定目标数据库,确保操作正确执行。

Laravel 支持轻松配置和使用多个数据库连接,适用于需要操作不同数据库(如 MySQL、postgresql、sqlite 等)或跨库读写数据的场景。你可以在一个项目中同时连接多个数据库,并在模型或查询中灵活切换。
配置多数据库连接
Laravel 的数据库 配置文件 位于 config/database.php。默认情况下,Laravel 使用 mysql 作为默认连接,你可以在此文件中添加新的连接。
例如,添加第二个 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_second'=> ['driver'=>'mysql','host'=> env('DB_SECOND_HOST','127.0.0.1'),'port'=> env('DB_SECOND_PORT','3306'),'database'=> env('DB_SECOND_DATABASE','second_db'),'username'=> env('DB_SECOND_USERNAME','second_user'),'password'=> env('DB_SECOND_PASSWORD',''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', ],
然后在 .env 文件中添加对应的 环境变量:
DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=main_db DB_USERNAME=root DB_PASSWORD=secret DB_SECOND_HOST=127.0.0.1 DB_SECOND_PORT=3306 DB_SECOND_DATABASE=other_db DB_SECOND_USERNAME=other_user DB_SECOND_PASSWORD=other_secret
在模型中使用指定数据库连接
创建 Eloquent 模型时,通过设置 $connection 属性来指定使用哪个数据库连接:
namespace appModels; use IlluminateDatabaseEloquentModel; class Order extends Model {protected $connection = 'mysql_second'; // 使用第二个数据库 protected $table = 'orders';}
这样所有对 Order 模型的操作都会自动使用 mysql_second 连接。
在查询构造器中动态切换连接
使用 DB::connection() 可以在运行时选择特定的数据库连接:
use IlluminateSupportFacadesDB; $users = DB::connection('mysql_second')->table('users')->get(); DB::connection('mysql_second')->table('logs')->insert(['action' => 'login', 'user_id' => 1,]);
适合在控制器或服务类中临时访问另一个数据库。
迁移与 Seeder 使用指定连接
运行迁移时,指定连接:
php artisan migrate --database=mysql_second
在 Seeder 中也可以指定连接:
public function run() { DB::connection('mysql_second')->table('categories')->insert([……]); }
或者在模型的 seeder 中设置静态连接:
Order::factory()->count(10)->create();
前提是 Order 模型已定义 $connection 属性。
基本上就这些。配置好连接后,按需在模型、查询或命令中使用即可。不复杂但容易忽略细节,比如环境变量拼写或迁移目标错误。
以上就是 Laravel 怎么连接多个数据库_Laravel 多数据库连接配置的详细内容,更多请关注 php 中文网其它相关文章!