简单几部搞定laravel/lumen跨库操作

1.跨库数据库配置 

在网站跟目录下的config文件中增加database.php作为数据库配置文件。配置如下:

//当前默认数据库

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', 'localhost'),
    'port' => env('DB_PORT', 3306),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'charset' => env('DB_CHARSET', 'utf8'),
    'collation' => env('DB_COLLATION', 'utf8_unicode_ci'),
    'prefix' => env('DB_PREFIX', ''),
    'timezone' => env('DB_TIMEZONE', '+00:00'),
    'strict' => env('DB_STRICT_MODE', false),
],
----------------------------------重磅内容来袭----------------------------------------------------

//增加其他库

'xd_db' => [
    'driver' => 'mysql',
    'host' => env('XD_DB_HOST', 'localhost'),
    'port' => env('XD_DB_PORT', 3306),
    'database' => env('XD_DB_DATABASE', 'forge'),
    'username' => env('XD_DB_USERNAME', 'forge'),
    'password' => env('XD_DB_PASSWORD', ''),
    'charset' => env('XD_DB_CHARSET', 'utf8'),
    'collation' => env('XD_DB_COLLATION', 'utf8_unicode_ci'),
    'prefix' => env('XD_DB_PREFIX', ''),
    'timezone' => env('XD_DB_TIMEZONE', '+00:00'),
    'strict' => env('XD_DB_STRICT_MODE', false),
],

2.跨库Model操作

只需要在model中增加下面语句即可,使用Model方式照旧:
    protected $connection='xd_db';//指定数据库

代码演示

class Customer extends Model
{
    protected $connection="xd_db";//指定数据库
    protected $table = "customer";
    public $timestamps = false;
    
    ....
}

使用Model方式不发生任何变化。
Customer::where(...);

3.跨库DB原生操作

DB后面通过增加connection()方法指定要连接的数据库。

注意:常见的DB操作的默认指定的数据库配置标示名为database.php中的‘mysql’。

DB::where('...')
等同于
DB::connection('mysql')->where();

同理,只需要指定需要连接的数据库的配置标示名即可实现跨库操作。

DB::connection('xd_db')->where();

4.跨库事务

默认事务操作范例:

try {
    DB::beginTransaction();
    
    ....业务操作....
    
    
    DB::commit();
}catch(\Exception $e){
    DB::rollback();
    throw $e;
}

跨库事务

try {
    DB::connection('xd_db')->beginTransaction();
    
    ....业务操作....
    
    
    DB::::connection('xd_db')->commit();
}catch(\Exception $e){
    DB::::connection('xd_db')->rollback();
    throw $e;
}

至此,关于laravel/lulem的所有有关跨库的操作均给出了具体操作方案。欢迎提出意见!

原文地址:http://blog.51cto.com/phpme/2068561

时间: 2024-10-08 10:41:38

简单几部搞定laravel/lumen跨库操作的相关文章

一次由MySQL跨库操作所引发的主从复制中断

今天,所有MySQL从服务器上的主从复制都被异常中断了,登陆到其中一台上执行show slave status\G,发现如下错误:--Last_Error: Error 'Operation DROP USER failed for 'guest'@'localhost'' on query. Default database: 'work'. Query: 'drop user 'guest'@'localhost''--也就是说,是 drop user 'guest'@'localhost'

Replicate_Do_DB 参数发现跨库操作时从库数据不更新

问题:使用复制是设置  Replicate_Do_DB 参数发现跨库操作时从库数据不更新 1 设置从库的 replicate_do_db = test 2 主库的sql语句是跨库的insert    在test7 上插入数据到test.a 的表上. use test7; 3 主库数据更新后查看从库信息发现数据并没有插入 4 原因是mysql 在执行sql前检查的当前默认库,所以跨库的sql语句不会被执行. 解决方案: 1 使用参数   replicate-wild-ignore-table =t

Oracle跨库操作实现

跨库操作是指从当前数据库中查询其他数据库的数据. 创建语句如下: create [public] database link linkName connect to username identified by “*” using ‘romoteHost’; 语句解释: public: 为可选项,如果为public,则当前实例下所有schema都可用,如果没有public,则是由当前创建的schema可用. linkName: 自定义链接的名称. username: 目标用户的用户名. *: 特

sql server service broker中调用存储过程执行跨库操作,不管怎么设置都一直提示 服务器主体 "sa" 无法在当前安全上下文下访问数据库 "dbname"。

用sql server自带的消息队列service borker,调用存储过程中,执行了一个跨库的操作,先是用了一个用户,权限什么都给够了,但是一直提示 服务器主体 "user" 无法在当前安全上下文下访问数据库 "dbname". 想着是架构方面的问题,换sa还是不行.查到微软的一篇文章 提示需要开数据库的 ALTER DATABASE current_db SET TRUSTWORTHY ON 我把跨的那个库设置了还是不行.最后自己写测试代码,代码如下: cre

轻松搞定laravel的curd操作搞定简易留言版(四)

一:目的开发laravel简易留言板 二:路由操作routes.php <?php //GET /msg/index 展示留言列表 //GET /msg/add 展示表单 //POST /msg/add 接受 POST 数据,并入库 //GET /msg/del/{id} 删除留言 //[GET,POST] /msg/up/{id} 修改留言 Route::get('msg/index','[email protected]'); Route::get('msg/add','[email pro

使用APICloud轻松简单6步搞定App制作开发

现如今,谁不知道App绝对就是OUT,谁不用App简直没法过日子!但是说到App制作,不懂编程,不懂技术的人就一脸懵圈.在门外汉来看,App制作是一件非常困难的事情,然而APICloud却说,轻松6个步骤就可以完成App制作和开发.不信我们就来看一看. 第一步:选择App开发模式 APICloud平台为不同需求的人提供了不同的产品,如果你要从零开始制作App,那么选用Deep Engine产品,用HTML5等标准Web语言去开发和制作App,iOS和Android两个系统是同时生成的. 如果你已

【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】

说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ———————————————————————————————————————————— 先申请一下 创建一个应用 网站或者移动 注意回调地址(登录的时候会传东西过去) 以网站为例 验证后即可成功,具体看创建时候的提示 记住上面的id 这个是你的api管理页面(更多可以申请) 下面说一下重头戏: 第一步:引入jq<s

【路由达人】简单两步搞定小米路由新增功能-DDNS(解析域名地址转向在线工具)

DDNS(Dynamic Domain Name Server)是动态域名服务的缩写! 简单来说目前ISP大多为我们提供动态IP(如ADSL拨号上网),而很多设备或服务需要通过远程访问时需要一个固定的IP,而固定IP的费用很难让客户接受.所以DDNS它可以捕获用户每次变化的IP,然后将其与域名相对应,这样客户就可以直接通过域名来进行远程访问了. 简而言之:让你在外网使用域名方式访问家里的网络 DDNS解析过程演示图 <ignore_js_op> 内置运营商 花生壳oray.com 公云3322

如何简单粗暴的搞定dubbo调用模块

dubbo调用模块核心功能是发起一个远程方法的调用并顺利拿到返回结果,其体系组成如下:1. 透明代理:通过动态代理技术,屏蔽远程调用细节以提高编程友好性.2. 负载均衡:当有多个提供者是,如何选择哪个进行调用的负载算法.3. 容错机制:当服务调用失败时采取的策略4. 调用方式:支持同步调用.异步调用5. 结果获取:指同步等待结果返回,还是异步通过回调通知获取结果. 原文地址:https://www.cnblogs.com/BruceV/p/12093967.html