zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Python3.8 爬取豆瓣电影TOP250 练手爬虫
    作为一名phper,php的运行模式,你真的了解吗??
    前端自动生成条码码插件JsBarcode.all.min.js
    js判断是否在微信内打开页面
    学习Swoole之如何避免成为被坑哭的程序员
    上下界网络流
    网络流建模经验
    HttpClient和Gson跨域访问
    CentOS7+mysql5.6配置主从
    Atlas安装配置
  • 原文地址:https://www.cnblogs.com/yiweiyihang/p/8331324.html
Copyright © 2011-2022 走看看