Laravel框架实现多数据库连接操作详解


Posted in PHP onJuly 12, 2019

本文实例讲述了Laravel框架实现多数据库连接操作。分享给大家供大家参考,具体如下:

这篇文章介绍了在laravel中连接2个数据库的方法

一、定义连接

进入到数据库配置文件 app/config/database.php 中,你可以定义多个形式相同或不同的数据库连接。例如,你想从2个 MYSQL 数据中抓取资料到你的程式中,你可以这样定义:

<?php
return array(
  'default' => 'mysql',
  'connections' => array(
    # Our primary database connection
    'mysql' => array(
      'driver'  => 'mysql',
      'host'   => 'host1',
      'database' => 'database1',
      'username' => 'user1',
      'password' => 'pass1'
      'charset'  => 'utf8',
      'collation' => 'utf8_unicode_ci',
      'prefix'  => '',
    ),
    # Our secondary database connection
    'mysql2' => array(
      'driver'  => 'mysql',
      'host'   => 'host2',
      'database' => 'database2',
      'username' => 'user2',
      'password' => 'pass2'
      'charset'  => 'utf8',
      'collation' => 'utf8_unicode_ci',
      'prefix'  => '',
    ),
  ),
);

默认连接任然是mysql,除非指定其他连接,如mysql2,我们的连接都是mysql连接。

2、指定连接

现在我们来指定mysql2连接,怎么做呢:

Schema 数据库迁移

用 Schema facade 可以创建任意连接。现在只需要用 connection() 方法就可以在指定的数据库中创建table

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

如果不加connection() 方法,就是在默认的数据库中创建table

查询

和上面一样,用connection()方法

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

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;
  }
}

跨数据库连接是可以的,但是也可能带来一些问题,这取决于你的数据库或者数据库配置,所以要谨慎使用。

原文地址:http://fideloper.com/laravel-multiple-database-connections

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP5 操作MySQL数据库基础代码
Sep 29 PHP
PHP运行时强制显示出错信息的代码
Apr 20 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
Sep 19 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
JavaScript创建命名空间的5种写法
Jun 24 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
php判断文件上传类型及过滤不安全数据的方法
Dec 17 PHP
php实现递归与无限分类的方法
Feb 16 PHP
php基于PDO连接MSSQL示例DEMO
Jul 13 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 PHP
php遍历目录下文件并按修改时间排序操作示例
Jul 12 #PHP
微信推送功能实现方式图文详解
Jul 12 #PHP
PHP FileSystem 文件系统常用api整理总结
Jul 12 #PHP
PHP实现字母数字混合验证码功能
Jul 11 #PHP
Swoole 5将移除自动添加Event::wait()特性详解
Jul 10 #PHP
PHP+redis实现微博的拉模型案例详解
Jul 10 #PHP
php解压缩zip和rar压缩包文件的方法
Jul 10 #PHP
You might like
md5 16位二进制与32位字符串相互转换示例
2013/12/30 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
JavaScript类库D
2010/10/24 Javascript
nodejs URL模块操作URL相关方法介绍
2015/03/03 NodeJs
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
HTML5 实现的一个俄罗斯方块实例代码
2016/09/19 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
JS鼠标滚动分页效果示例
2017/07/05 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
跟老齐学Python之编写类之二方法
2014/10/11 Python
numpy.std() 计算矩阵标准差的方法
2018/07/11 Python
Python2和Python3中urllib库中urlencode的使用注意事项
2018/11/26 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
Python连接Impala实现步骤解析
2020/08/04 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
班主任新年寄语
2014/04/04 职场文书
音乐节策划方案
2014/06/09 职场文书
商务邀请函
2015/01/30 职场文书
攻略丨滑雪究竟该选哪款对讲机?
2022/02/18 无线电
MySQL详细讲解变量variables的用法
2022/06/21 MySQL