laravel使用多个数据库连接

本文介绍如何在Laravel项目中配置并使用两个独立的MySQL数据库:一个是默认数据库,另一个用于特定业务逻辑。通过配置.env文件和database.php文件实现,并展示了如何在Model中指定不同的数据库连接。

1、配置.env文件

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

DB_HOST_CENTER=127.0.0.1
DB_PORT_CENTER=3306
DB_DATABASE_CENTER=database_center
DB_USERNAME_CENTER=root
DB_PASSWORD_CENTER=

 

2、配置config/database.php

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],
        'mysql_center' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST_CENTER', 'localhost'),
            'port' => env('DB_PORT_CENTER', '3306'),
            'database' => env('DB_DATABASE_CENTER', 'forge'),
            'username' => env('DB_USERNAME_CENTER', 'forge'),
            'password' => env('DB_PASSWORD_CENTER', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],

 

3、创建model

// 这个model将采用默认的'mysql'连接
class UserModel extends Model
{
    // 数据库'database'中的users表
    protected $table = "users";
}

 

// 这个model将使用mysql_center连接
class UserModel extends Model
{
  // 数据库'dadtabase_center'中的users表
    protected $connection = 'mysql_center';
    protected $table = "users";

}

复制代码

### Laravel 默认使用数据库引擎 Laravel 框架默认使用 **MySQL** 作为其数据库引擎,但其底层通过 **PDO 接口和查询构建器** 实现了对多种数据库的兼容性支持,包括 PostgreSQL、SQLite 和 SQL Server 等。这种设计使得开发者可以在不同项目中灵活切换数据库类型,而无需大幅修改业务逻辑中的数据库操作代码。 在 Laravel 的配置文件 `config/database.php` 中,可以定义多个数据库连接,并指定默认使用数据库连接类型,默认值通常设置为 `'mysql'`: ```php 'default' => env('DB_CONNECTION', 'mysql'), ``` Laravel 使用 **InnoDB** 作为默认的存储引擎来创建数据表[^4]。这一点可以通过迁移文件中显式调用 `$table->engine('InnoDB');` 来体现,即使不显式声明,Laravel 所依赖的 MySQL 数据库也通常以 InnoDB 作为默认表引擎。 此外,Laravel 支持通过环境变量 `DB_*` 来动态配置数据库连接信息,如主机地址、端口、数据库名、用户名和密码等。这种方式极大提升了应用在不同环境(开发、测试、生产)下的可移植性。 --- ### 数据库引擎与迁移配置示例 在 Laravel 的迁移文件中,可以通过如下方式指定表的存储引擎为 InnoDB: ```php Schema::create('flights', function (Blueprint $table) { $table->engine('InnoDB'); $table->comment('航班'); $table->increments('id'); $table->string('name'); $table->string('airline'); $table->timestamps(); }); ``` 该机制确保了数据库结构的一致性和事务的支持能力,尤其适用于需要高并发写入或复杂关系模型的场景。 --- ### 兼容性扩展 尽管默认使用 MySQL,Laravel 对其他数据库的支持也非常完善。例如,在 Laravel 12 中可以直接连接阿里云的 PolarDB(兼容 MySQL/PostgreSQL 协议),只需在配置文件中正确设置数据库驱动即可实现无缝对接[^3]。这也体现了 Laravel数据库抽象层设计上的灵活性和前瞻性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值