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 相关文章推荐
聊天室php&amp;mysql(四)
Oct 09 PHP
一个ubbcode的函数,速度很快.
Oct 09 PHP
PHP+MySQL5.0中文乱码解决方法
Nov 20 PHP
解析thinkphp import 文件内容变量失效的问题
Jun 20 PHP
解析PHP中empty is_null和isset的测试
Jun 29 PHP
php curl模拟post请求小实例
Nov 13 PHP
php内核解析:PHP中的哈希表
Jan 30 PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
php+lottery.js实现九宫格抽奖功能
Jul 21 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 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加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
smarty模板局部缓存方法使用示例
2014/06/17 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
php命令行模式代码实例详解
2021/02/26 PHP
cssQuery()的下载与使用方法
2007/01/12 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
基于JS实现限时抢购倒计时间表代码
2017/05/09 Javascript
javascript cookie的基本操作(添加和删除)
2017/07/24 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
NodeJS模块Buffer原理及使用方法解析
2020/11/11 NodeJs
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
python高阶爬虫实战分析
2018/07/29 Python
python快排算法详解
2019/03/04 Python
python实现AES加密解密
2019/03/28 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
机关门卫岗位职责
2013/12/30 职场文书
小学生推普周国旗下讲话稿
2014/09/21 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
2015年电工工作总结
2015/04/10 职场文书
2015年班干部工作总结
2015/04/29 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers