laravel 监听事件事务处理日志纪录
监听查找事件
你可以使用 DB::listen 方法,去监听查找的事件:
DB::listen(function($sql, $bindings, $time)
{
//
});
数据库事务处理
你可以使用 transaction 方法,去执行一组数据库事务处理的操作:
DB::transaction(function()
{
DB::table('users')->update(['votes' => 1]);
DB::table('posts')->delete();
});
注意:在 transaction 闭包若抛出任何异常会导致事务自动回滚。www.96net.cn
有时候你可能需要自己开始一个事务:
DB::beginTransaction();
你可以通过 rollback 的方法回滚事务:
DB::rollback();
最后,你可以通过 commit 的方法提交事务:
DB::commit();
获取连接
若要使用多个连接,可以通过 DB::connection 方法取用:
$users = DB::connection('foo')->select(...);
你也可以取用原始底层的 PDO 实例:
$pdo = DB::connection()->getPdo();
有时候你可能需要重新连接到特定的数据库:
DB::reconnect('foo');
如果你因为超过了底层 PDO 实例的 max_connections 的限制,需要关闭特定的数据库连接,可以通过 disconnect 方法:
DB::disconnect('foo');
查找日志纪录
Laravel 可以在内存里访问这次请求中所有的查找语句。然而在有些例子下要注意,比如一次添加 大量的数据,可能会导致应用程序耗损过多内存。 如果要启用日志,可以使用 enableQueryLog 方法:
DB::connection()->enableQueryLog();
要得到执行过的查找纪录数组,你可以使用 getQueryLog 方法:
$queries = DB::getQueryLog();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端