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 相关文章推荐
用mysql触发器自动更新memcache的实现代码
Oct 11 PHP
php和javascript之间变量的传递实现代码
Dec 19 PHP
PHP中创建和验证哈希的简单方法实探
Jul 06 PHP
基于PHP制作验证码
Oct 12 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
Nov 28 PHP
php文件上传 你真的掌握了吗
Nov 28 PHP
Thinkphp实现站点静态化的方法详解
Mar 21 PHP
PHP实现图片的等比缩放和Logo水印功能示例
May 04 PHP
thinkPHP5框架中widget的功能与用法详解
Jun 11 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 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
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
2011/10/08 PHP
删除html标签得到纯文本可处理嵌套的标签
2014/04/28 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
js实现密码强度检测【附示例】
2016/03/30 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
vuejs 单文件组件.vue 文件的使用
2017/07/28 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
JS重学系列之聊聊new操作符
2019/03/04 Javascript
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
Python原始字符串(raw strings)用法实例
2014/10/13 Python
python实现的简单猜数字游戏
2015/04/04 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
python isinstance函数用法详解
2020/02/13 Python
复古斯堪的纳维亚儿童服装:Baby go Retro
2017/09/09 全球购物
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
几个人围成一圈的问题
2013/09/26 面试题
视图的作用
2014/12/19 面试题
小学教师评语大全
2014/04/23 职场文书
医院护士工作检讨书
2014/10/26 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python