zoukankan      html  css  js  c++  java
  • 如何在 Laravel 中连接多个 MySQL 数据库

     

    第一步、定义数据库链接

    config/database.php

    <?php
    return [
    
        'default' => 'mysql',
    
        'connections' => [
    
            # 主要数据库连接
            'mysql' => [
                'driver'    => 'mysql',
                'host'      => 'host1',
                'database'  => 'database1',
                'username'  => 'user1',
                'password'  => 'pass1',
                'charset'   => 'utf8mb4',
                'collation' => 'utf8mb4_unicode_ci',
                'prefix'    => '',
            ],
    
            # 第二个链接
            'mysql2' => [
                'driver'    => 'mysql',
                'host'      => 'host2',
                'database'  => 'database2',
                'username'  => 'user2',
                'password'  => 'pass2',
                'charset'   => 'utf8mb4',
                'collation' => 'utf8mb4_unicode_ci',
                'prefix'    => '',
            ]
        ],
    ];
     

    第二步、连接第二个数据库

    我们已经成功配置了第二个数据库链接,接下来讲解几种连接的方法。

     

    1. Schema 表结构更改

    在代码迁移时,可以使用 Schema 提供的 connection() 方法:

    Schema::connection('mysql2')->create('some_table', function($table)
    {
        $table->increments('id'):
    });
     

    2. Query 数据库查询

    同样的,数据库查询构造器里提供了一个 connection() 方法:

    $users = DB::connection('mysql2')->select(...);
     

    3. Eloquent 数据模型

    使用 $connection 属性来设置默认的连接:

    <?php
    
    class SomeModel extends Eloquent {
    
        protected $connection = 'mysql2';
    
    }

    你可以可以使用 setConnection 来动态设置连接:

    <?php
    
    class SomeController extends BaseController {
    
        public function someMethod()
        {
            $someModel = new SomeModel;
    
            $someModel->setConnection('mysql2');
    
            $something = $someModel->find(1);
    
            return $something;
        }
    
    }

    或者使用 on() 方法:

    $someModel->on('mysql2')->find(1);
  • 相关阅读:
    一次Oracle数据迁移
    mysql Error Handling and Raising in Stored Procedures
    expdp ORA-39213
    RHEL 6.4 64bit kettle5.01导入xlsx格式的excel时报错
    Oracle表空间传输测试
    oracle expdp 无法导出SYS下特定TABLE
    Oracle wrap 测试的一些细节问题
    论文-CondenseNet: An Efficient DenseNet using Learned Group Convolutions
    SystemVerilog-断言
    推挽输出和开漏输出
  • 原文地址:https://www.cnblogs.com/mouseleo/p/10029948.html
Copyright © 2011-2022 走看看