Skip to content

feat(database): 实现数据库事务管理器- 新增 DatabaseTransactionsManager 类用于管理数据库事务#7544

Open
woweijun123 wants to merge 2 commits into
hyperf:3.1from
woweijun123:3.1-weichengjun
Open

feat(database): 实现数据库事务管理器- 新增 DatabaseTransactionsManager 类用于管理数据库事务#7544
woweijun123 wants to merge 2 commits into
hyperf:3.1from
woweijun123:3.1-weichengjun

Conversation

@woweijun123

Copy link
Copy Markdown
  • 新增 DatabaseTransactionRecord 类用于记录事务信息
  • 在 Connection 类中添加事务管理器的设置方法
  • 在 db-connection 中自动注入事务管理器
  • 实现事务开始、提交、回滚时的回调机制- 支持事务提交后的回调执行
  • 支持事务回滚时的回调执行
  • 优化事务层级管理逻辑 -修复事务丢失连接时的处理逻辑

- 新增 DatabaseTransactionRecord 类用于记录事务信息
- 在 Connection 类中添加事务管理器的设置方法
- 在 db-connection 中自动注入事务管理器
- 实现事务开始、提交、回滚时的回调机制- 支持事务提交后的回调执行
- 支持事务回滚时的回调执行
- 优化事务层级管理逻辑
-修复事务丢失连接时的处理逻辑
@huangdijia huangdijia requested a review from Copilot September 23, 2025 11:14

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Implements a comprehensive database transaction management system with callback support for transaction lifecycle events. The PR introduces a centralized transaction manager that tracks transaction states and handles commit/rollback callbacks across nested transactions.

Key changes:

  • Adds DatabaseTransactionsManager and DatabaseTransactionRecord classes for transaction state management
  • Integrates transaction manager with database connections and the connection pool
  • Implements callback mechanisms for post-commit and rollback scenarios

Reviewed Changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/db-connection/src/Connection.php Automatically injects transaction manager into database connections
src/database/src/DatabaseTransactionsManager.php Core transaction manager with nested transaction support and callback handling
src/database/src/DatabaseTransactionRecord.php Transaction record class for storing transaction state and callbacks
src/database/src/Connection.php Adds transaction manager setter method
src/database/src/Concerns/ManagesTransactions.php Integrates transaction manager calls into existing transaction methods
src/contract/src/ShouldDispatchAfterCommit.php Marker interface for post-commit dispatch behavior

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment thread src/database/src/Connection.php Outdated
Comment thread src/database/src/Concerns/ManagesTransactions.php Outdated
Comment thread src/database/src/Concerns/ManagesTransactions.php
Comment thread src/database/src/DatabaseTransactionsManager.php Outdated
Comment thread src/database/src/DatabaseTransactionsManager.php Outdated
- 移除了 transactionsManager 属性访问时的可空操作符以避免潜在的调用异常
- 为 setTransactionManager 方法添加了类型提示和 PHPDoc 注释以增强代码健壮性
- 修改了 currentTransaction 的检查逻辑以确保连接存在时才进行事务回滚操作
- 更新了事务清理方法中的条件判断以防止对不存在的连接执行事务操作
@woweijun123

Copy link
Copy Markdown
Author

solved the problem

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants