laravel 操作多数据库总结

读写分离
  • env配置
DB_CONNECTION=mysql
DB_HOST=xxxxxx
DB_PORT=xxx
DB_DATABASE=xx
DB_USERNAME=xxxx
DB_PASSWORD=xxxx DB_WRITE_CONNECTION=mysql
DB_WRITE_HOST=xxx
DB_WRITE_PORT=3306
DB_WRITE_DATABASE=xxx
DB_WRITE_USERNAME=xx
DB_WRITE_PASSWORD=xxx
  • database.php配置
'mysql' => [
'driver' => 'mysql',
'database' => 'test',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'strict' => false, // MySQL数据库严格模式,开启后,如果没有默认值会报错,不开启会自动填充一个默认值
'read' => [
[
'host' => '127.0.0.2',
'port' => 3307
],
[
'host' => '127.0.0.3',
'port' => 3308
]
],
'write' => [
'host' => '127.0.0.1',
'port' => 3306,
]
],
  • 读、写库选择
  • 如果不手动选择的话,数据库会自动判断读写库的选择。
DB::connection('mysql::write')->table('tablename')->find(1); //手动选择写库
DB::connection('mysql::read')->table('tablename')->find(1); //手动选择读库
多数据库
  • 默认使用mysql这个数据库
  • database.php配置
        'mysql1' => [
'driver' => 'mysql',
'host' => env('DB_HOST'),
'port' => env('DB_PORT'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'unix_socket' => env('DB_SOCKET'),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
],
'mysql2' => [
'driver' => 'mysql',
'host' => env('DB_WRITE_HOST' ),
'port' => env('DB_WRITE_PORT'),
'database' => env('DB_WRITE_DATABASE'),
'username' => env('DB_WRITE_USERNAME', 'forge'),
'password' => env('DB_WRITE_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
],
  • 方式一:model配置
class OrderFrom extends Model
{ /**
* The table associated with the model.
*
* @var string
*/
protected $connection='mysql2'; //这里设置库
protected $table = 'yd_order_from'; }
  • 方式二:可以不再model中配置,在使用的时候,通过$orderFrom->setConnection('mysql2')方法来选择数据库。

laravel 操作多数据库总结的更多相关文章

  1. laravel-- 在laravel操作redis数据库的数据类型(string、哈希、无序集合、list链表、有序集合)

    安装redis和连接redis数据库 在controller头部引入 一.基本使用 public function RedisdDbOne() { // 清空Redis数据库 Redis::flush ...

  2. [转]Laravel 4之数据库操作

    Laravel 4之数据库操作 http://dingjiannan.com/2013/laravel-database/ 数据库配置 Laravel数据库配置在app/config/database ...

  3. laravel操作Redis排序/删除/列表/随机/Hash/集合等方法全解

    Song • 3563 次浏览 • 0 个回复 • 2017年10月简介 Redis模块负责与Redis数据库交互,并提供Redis的相关API支持: Redis模块提供redis与redis.con ...

  4. Java操作Sqlite数据库-jdbc连接

    Java操作Sqlite数据库步骤: 1. 导入Sqlite jdbc 本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD 2 ...

  5. PHP操作MySQL数据库5个步骤

    PHP操作MySQL数据库一般可分为5个步骤:1.连接MySQL数据库服务器:2.选择数据库:3.执行SQL语句:4.关闭结果集:5断开与MySQL数据库服务器连接. 1.用mysql_connect ...

  6. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  7. SQL数据库添加新账号,只操作指定数据库

    思路: 1.创建数据库服务器登录用户 2.创建指定数据库的用户,并且和服务器用户联系起来 3.给数据库的用户添加角色 代码实现: 1.创建名为login的服务器登录用户dba,尼玛dbpwd,默认数据 ...

  8. ASP.NET操作ORACLE数据库之模糊查询

    ASP.NET操作ORACLE数据库之模糊查询 一.ASP.NET MVC利用OracleHelper辅助类操作ORACLE数据库 //连接Oracle数据库的连接字符串 string connect ...

  9. 通过泛型数据,操作SQL数据库

    本人在操作数据库的时候,采用将对象的形式操作传入数据库,经过大量百度和朋友帮助,总结出如下两个接口.用于插入数据,提取数据. 要这样操作的前提条件,就是类名和表名一致,类字段和表字段一致就可以了 // ...

随机推荐

  1. Qt和c/c++connect函数冲突解决方法

    在使用c/c++的connect函数时在前面写::connect()这样就可以解决了

  2. python multiprocessing.freeze_support

    Running on windows platform, give me an error as below: File "C:\Python\lib\multiprocessing\for ...

  3. Jenkins构建Vue项目

    一.Jenkins Job相关配置 二.发布脚本 [root@pdata-nps05 nps]# cat nps_web-page.sh #!/bin/sh USER_IP=172.168.168.1 ...

  4. Android系统启动过程分析

    Android系统启动过程分析 一.Android平台架构 首先贴一张Android系统架构图方便理解整个Android架构,这可以让我们从整体上对整个启动流程有个大概认知. 可以看出整个架构由5部分 ...

  5. SCU 4439 Vertex Cover|最小点覆盖

    传送门 Vertex Cover frog has a graph with n vertices v(1),v(2),…,v(n)v(1),v(2),…,v(n) and m edges (v(a1 ...

  6. 【转】Java集合框架面试问题集锦

    Java集合框架(例如基本的数据结构)里包含了最常见的Java常见面试问题.很好地理解集合框架,可以帮助你理解和利用Java的一些高级特性.下面是面试Java核心技术的一些很实用的问题. Q:最常见的 ...

  7. Yolo V3损失函数占个坑

    https://blog.csdn.net/weixin_43384257/article/details/100974776目前来看讲的最清楚的博客 https://zhuanlan.zhihu.c ...

  8. python切片(获取一个子列表(数组))

    切片: 切片指从现有列表中,获取一个子列表 返回一个新列表,不影响原列表. 下标以 0 开始: list = ['红','绿','蓝','白','黑','黄','青']# 下标 0 1 2 3 4 5 ...

  9. ubuntu下打开html页面

    相信遇到这个问题的各位都是闲人,所以肯定是有时间的,网上打开html教程很多,但是就不吐槽了emmm... 详细信息不在此篇幅,网络资源,我就不重复了,看着很烦的,见附录 下面进入正题 这个配置玩过的 ...

  10. 每天玩转3分钟 MyBatis-Plus - 1. 配置环境

    每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 ...