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 相关文章推荐
实现 win2003 下 mysql 数据库每天自动备份
Dec 06 PHP
需要发散思维学习PHP
Jun 29 PHP
php与mysql建立连接并执行SQL语句的代码
Jul 04 PHP
PHP中设置时区方法小结
Jun 03 PHP
PHP处理excel cvs表格的方法实例介绍
May 13 PHP
php缓冲 output_buffering和ob_start使用介绍
Jan 30 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
Nov 19 PHP
Laravel 5 框架入门(四)完结篇
Apr 09 PHP
php+MySQL实现登录时验证登录名和密码是否正确
May 10 PHP
Laravel定时任务的每秒执行代码
Oct 22 PHP
PHP保存Base64图片base64_decode的问题整理
Nov 04 PHP
thinkphp5.1框架模板赋值与变量输出示例
May 25 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
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
PHP下escape解码函数的实现方法
2010/08/08 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
PHP微信支付开发实例
2016/06/22 PHP
php_pdo 预处理语句详解
2016/11/21 PHP
PHP判断函数是否被定义的方法
2019/06/21 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
用javascript实现读取txt文档的脚本
2007/07/20 Javascript
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
浅谈addEventListener和attachEvent的区别
2016/07/14 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
详谈commonjs模块与es6模块的区别
2017/10/18 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
微信小程序引入Vant组件库过程解析
2019/08/06 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
P/Invoke是什么
2015/07/31 面试题
中国文明网签名寄语
2014/01/18 职场文书
会计求职信
2014/05/29 职场文书
教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
和领导吃饭祝酒词
2015/08/11 职场文书
Python包argparse模块常用方法
2021/06/04 Python
一行Python命令实现批量加水印
2022/04/07 Python