Laravel多个数据库任意切换
来源:互联网 发布:淘宝记账软件 编辑:程序博客网 时间:2024/06/14 05:54
因为测试环境和生产环境不太一样,数据库有时候也不太一样,所以我需要确认两个环境之间的差异,有没有多的表,有没有多的字段。这里涉及到一个点,指定数据库查询和操作,网上有些人胡乱搞,七世这个是很简单的。在config下面的database.php配置你需要和可能会用到的数据信息,默认是* ‘default’ => env(‘DB_CONNECTION’, ‘mysql’),*
看到了吧?
这个是默认的连接,我们一般会把默认的数据库的信息放在.env文件里面,因为使用git的时候,每个服务器配置稍有区别,这个文件是通常被忽略掉的。需要注意的是:我们配置其他可能会用到的数据库信息的时候,像下面这样配置,注意看有啥不同?默认的哪个数据库先从env文件里面取值。
其他数据库连接信息,就直接配置。然后使用的时候就用connect方法指定连接信息即可。具体的看下面的代码实例:
'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false,],'mysql_test' => [ 'driver' => 'mysql', 'host' => '1xx.78.xxx.142', 'database' => 'xxx', 'username' => 'xxx', 'password' => 'xxx', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false,],'mysql_production' => [ 'driver' => 'mysql', 'host' => '35.xxx.xxx.224', 'database' => 'xxx', 'username' => 'xxx', 'password' => 'xxx', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false,],
D:\phpStudy\WWW\xxx\config\database.php
public function diffDatabase() { //设置不限制运行时间 set_time_limit(0); //设置链接多个数据库 $mysql_production = DB::connection('mysql_production'); $mysql_test = DB::connection('mysql_test'); // $mysql = DB::connection('mysql'); //获取数据库中的表 $mysql_production_tables = array_map('reset', $mysql_production->select('SHOW TABLES')); $mysql_test_tables = array_map('reset', $mysql_test->select('SHOW TABLES')); //获取两个数据库中不同的表 $diff_tables = array_diff($mysql_test_tables, $mysql_production_tables); //获取两个数据库中不同的字段 foreach ($mysql_test_tables as $key => $value) { //获取在测试数据库中,却不在真实数据库中的字段 $diff_column[$value] = array_diff(Schema::connection('mysql_test')->getColumnListing($value), Schema::connection('mysql_production')->getColumnListing($value)); //获取在真实数据库中,却不在测试数据库中的字段 $production_test_diff_column[$value] = array_diff(Schema::connection('mysql_production')->getColumnListing($value), Schema::connection('mysql_test')->getColumnListing($value)); } $diff_column = array_filter($diff_column); echo "<pre>"; if (!empty($diff_tables)) { echo '<h1>生产环境中没有的表:</h1>'; print_r($diff_tables); } if (!empty($diff_column)) { echo '<h1>测试环境有,但生产环境中没有的字段:</h1>'; print_r($diff_column); } if (!empty($production_test_diff_column)) { echo '<h1>测试环境没有,生产环境有的字段:</h1>'; print_r($production_test_diff_column); } echo "</pre>"; if (empty($diff_tables) && empty($diff_column) && empty($production_test_diff_column)) { echo '<h1>真实环境与测试环境相比没有差异!</h1>'; } exit;}
阅读全文
0 0
- Laravel多个数据库任意切换
- thinkPHP 多个数据库 切换
- 一个页面实现多个管理页面任意切换
- Laravel框架实现同时连接多个数据库
- unity数据持久化-如何保存多个帐号密码并切换任意用户实现登陆
- laravel使用多个数据库连接
- laravel sum 多个字段
- laravel使用多个数据库连接
- 任意数_任意多个任意数相乘
- java实现任意2个时区间的切换
- CI框架多个mysql数据库进行切换的思路
- 上传任意多个文件
- hibernate连接多个数据库,如何动态切换(我一般用配置文件动态切换)
- laravel数据库
- Laravel 数据库
- 多个Laravel项目的冲突问题
- tab切换,适用于多个tab切换
- Struts2教程:上传任意多个文件
- 2017第三十届中国国际眼镜业展览会会刊(参展商名录)
- BAT资深算法工程师《深度学习》读书分享:概率和信息论
- 西二旗从业者恋爱收支调查报告:没想到平均单身年龄最高的群体竟然是?
- 不止 20K,Python 工程师薪资再飙升(内附转型指南)
- 操作符的重载
- Laravel多个数据库任意切换
- AudioPolicyManager Class
- 递归查询所有部门,并按部门等级打印
- jQuery插件jcDate日期时间选取
- Spark源码学习-windows使用idea搭建源码阅读集群
- web前端学习资源分享
- html列表
- 8、HTML5属性
- socket阻塞与非阻塞,同步与异步、I/O模型