zoukankan      html  css  js  c++  java
  • Laravel 配置连接多个数据库以及如何使用

    配置连接

    配置 .env 文件

    /* 这部分是默认的数据库设置 */
    DB_CONNECTION=mysql
    DB_HOST=xxx.xxx.xxx.xxx
    DB_PORT=3306
    DB_DATABASE=default_db_name
    DB_USERNAME=default_username
    DB_PASSWORD=default_password
    
    /* 这部分是新增的数据库设置 */
    DB_HOST_NEW=xxx.xxx.xxx.xx
    DB_PORT_NEW=3306
    DB_DATABASE_NEW=new_db_name
    DB_USERNAME_NEW=new_db_username
    DB_PASSWORD_NEW=new_db_password
    

    配置 configdatabase.php 文件

    /* 这是默认的设置 */
    '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', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],
    
    /* 这是需要新增加的设置内容,使用 .env 新增的内容 */
    'mysql_new' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST_NEW', 'localhost'),
        'port' => env('DB_PORT_NEW', '3306'),
        'database' => env('DB_DATABASE_NEW', 'forge'),
        'username' => env('DB_USERNAME_NEW', 'forge'),
        'password' => env('DB_PASSWORD_NEW', ''),
        'charset' => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix' => '',
        'strict' => false,
        'engine' => null,
    ],
    

    使用

    Schema

    在各种 Schema Builder 中使用,可以使用 Schema facade 类来连接任意想要连接的数据库,只需要使用 connection() 方法即可,如 migration 文件中应用:

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

    Query

    在 Query Builder 类中也是使用 connection() 方法选择数据库即可:

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

    Eloquent

    这是连接默认数据库的 model 文件,直接使用表即可:

    // appModelsUsers.php 
    class Users extends Model
    {
        // 数据库 'default_db_name' 中的 users 表
        protected $table = "users";
    }
    

    这是需要连接新增的数据库的 model 文件,使用 $connection 属性进行数据库关联:

    // appModelsNewUsers.php
    class NewUsers extends Model
    {
        // 先连接新的数据库设置(configdatabase.php 新增的字段名)
        protected $connection = 'mysql_new';
        
        // 数据库 'new_db_name' 中的 users 表
        protected $table = "users";
    }
    

    然后在其他类文件中引用该 model 文件即可。

    另外还可以在控制器中,运行程序的时候,通过 setConnection 方法定义连接:

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

    在 configdatabase.php 文件中,如果默认的数据库无法连接,在使用非默认数据库的时候,程序运行过程中会报错,所以要先保证默认数据库能正常连接访问,再使用非默认的数据库。

  • 相关阅读:
    【git hub使用】
    【struct2 第一天】
    【JSP基础 第一天】
    【Java基础学习 day01】
    网站建设 【Django】 【MTV】
    Python-Json字符串和XML解析
    Python-冒泡和快排
    Python-面向对象编程
    练习-字符串编码
    练习-统计文件中单词数量
  • 原文地址:https://www.cnblogs.com/caibaotimes/p/13904837.html
Copyright © 2011-2022 走看看