• laravel 连接同一服务器上多个数据库操作 、 连接多个不同服务器上的不同数据库操作以及多个数据库操作的事务处理


    !注意:标红的要注意区分开

    第一步、配置.env文件(同一服务器上多个数据库)

    DB_CONNECTION=pgsql
    DB_HOST=IP(例如:127.0.0.1)
    DB_PORT=端口号(例如:5432)
    DB_DATABASE=连接的第一个数据库名(例如:user)
    DB_USERNAME=账号(例如:root)
    DB_PASSWORD=密码(例如:root)
    DB_DATABASE2=连接的第二个数据库名(例如:user2)
    DB_DATABASE3=连接的第三个数据库名(例如:user3)

     第一步、配置.env文件(多个服务器上的数据库)

    第二部分把不相同的改改就行了,注意区分

    第二部、配置config/database.php(上面两个第一步的配置是差不多的,注意区分好就行了)

    //这个是默认的

    'pgsql' => [
      'driver' => 'pgsql',
      'host' => env('DB_HOST', '127.0.0.1'),
      'port' => env('DB_PORT', '5432'),
      'database' => env('DB_DATABASE', 'forge'),
      'username' => env('DB_USERNAME', 'forge'),
      'password' => env('DB_PASSWORD', ''),
      'charset' => 'utf8',
      'prefix' => '',
      'schema' => 'public',
      'sslmode' => 'prefer',
    ],

    //根据需求要连几个数据库就重复写下面的配置几遍,注意这里面'database'要跟 .env 里标红的相对应
    'pgsql2' => [       
      'driver' => 'pgsql',
      'host' => env('DB_HOST', '127.0.0.1'),
      'port' => env('DB_PORT', '5432'),
      'database' => env('DB_DATABASE2', 'forge'),
      'username' => env('DB_USERNAME', 'forge'),
      'password' => env('DB_PASSWORD', ''),
      'charset' => 'utf8',
      'prefix' => '',
      'schema' => 'public',
      'sslmode' => 'prefer',
    ],

    'pgsql3' => [       
      'driver' => 'pgsql',
      'host' => env('DB_HOST', '127.0.0.1'),
      'port' => env('DB_PORT', '5432'),
      'database' => env('DB_DATABASE3', 'forge'),
      'username' => env('DB_USERNAME', 'forge'),
      'password' => env('DB_PASSWORD', ''),
      'charset' => 'utf8',
      'prefix' => '',
      'schema' => 'public',
      'sslmode' => 'prefer',
    ],

    第三步、使用方法

      方法1:
        user1=DB::connection(pgsql)>select("SQL");user1=DB::connection(′pgsql′)−>select("SQL语句");user2 = DB::connection('pgsql2')->update("SQL语句");
        $user3 = DB::connection('pgsql3')->select("SQL语句");

        DB::connection('pgsql3')->delete("delete from changeinfo where id=1");

        DB::connection('pgsql3')->insert("insert into changeinfo(name,idcard,iccid) values ('maxin,maxin′,′cardid','$iccid')");

        DB::connection('pgsql')->update("update radcheck SET value='datawhereusername=data′whereusername=′phone'");

        DB::connection('pgsql3')->select("select * from changeinfo where iccid='$iccid'");

      方法2:  
        protected connection=pgsql;//使    protectedconnection=′pgsql′;//指明你要使用的连接    protectedconnection = 'pgsql2'; //指明你要使用的连接
        protected $connection = 'pgsql3'; //指明你要使用的连接

    第四步、多个数据库操作事务处理

    use socket; 

    DB::connection('pgsql1')->beginTransaction();  //开启
    DB::connection('pgsql')->beginTransaction();

    rs1=DB::connection(pgsql1)>update("updateradcheckSETvalue=rs1=DB::connection(′pgsql1′)−>update("updateradcheckSETvalue=′data' where username='phone");phone′");rs2 = DB::connection('pgsql')->update("update radcheck SET value='datawhereusername=data′whereusername=′phone'");


    if(rs1&&rs1&&rs2)
    {
      DB::connection('pgsql')->commit(); //提交
      DB::connection('pgsql1')->commit();
      return true;
    }
    else
    {
      DB::connection('pgsql')->rollback(); //回滚
      DB::connection('pgsql1')->rollback();
      return false;
    }

    原文地址:https://www.cnblogs.com/54sen/articles/6929500.html

  • 相关阅读:
    04.Javascript——入门一些方法记录之iterable
    03.Javascript——入门一些方法记录之Map和Set
    02.Javascript——入门一些方法记录之Object
    unity 工具开发基础
    lua热重载
    unity接入安卓sdk (unity调用安卓工程)
    转 Unity企业级支持案例与分析
    ugui的优化
    c#各个版本的特性
    最好用的lua编辑器--------emmylua使用汇总
  • 原文地址:https://www.cnblogs.com/yiweiyihang/p/8331324.html
Copyright © 2020-2023  润新知