如何用日志提醒现在 Laravel 链接的是哪一个数据库

在做高可用,现在是靠DBA手动查看连接的数据库。
如何在laravel查看当前数据库?因为我要用日志记录下当前链接的数据库,在高可用切换是体现出来。

颜⑧
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 5

DB::getDatabaseName();
试试

6年前 评论

楼上正解。

我来说说细节

  • Laravel支持在config/database.php里面配置多个数据库连接,可以透过设置Model的$connection属性来达到不同的Model,对应不同的数据库连接。

  • 在Model里面有一个叫做getConnection的方法,可以获取当前Model正在使用的Connection 对象 。通过Connection对象的getDatabaseName方法获取获取当前正在使用的数据库名称。楼上的
    DB::getDatabaseName();实际就是用的Connection对象

另外一个比较暴力的方式是根据model的connection标识直接去config/database.php里面获取配置的数据库名称。

6年前 评论
颜⑧

@我不饿 谢谢 ,这个是获取数据的名称,并不能说明我链接的哪一个后台数据,比如127.0.0.1 。

6年前 评论
颜⑧

@dongyuhappy Model 里面去硬写 $connection倒也是一个办法。我已经有已经基础环境 ,mysql 5.7 的group replication ,用的是读写分离,但是链接的都是写的数据库,一旦写的数据一台机器关闭服务,在laravel中没有将数据的高可用链接切换。 在namespace Illuminate\Database 下有一个类似 failover的功能 reconnectIfMissingConnection(),没有起作用。 在 https://github.com/laravel/framework/issue... 中有提供解决办法,我现有是5.1版本,模拟后依旧不能成功。用DB::getPdo()可以看到链接信息,但是切换的时候想在日志中体现出来。

6年前 评论

可以把 主从数据库的名字 做一点区分

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!