Skip to content

Conversation

@People-Sea
Copy link
Contributor

  • feat: added incrementOrCreate new method

  • added increment step and extra params to incrementOrCreate

@huangdijia
Copy link
Member

代码审查报告

📋 PR 概述

这个PR为Eloquent模型添加了一个新的incrementOrCreate方法,功能是"如果记录不存在则创建,如果存在则递增指定字段"。

✅ 优点

  1. 实用性强:这个方法解决了常见的"计数器"场景需求
  2. API设计合理:方法签名清晰,参数配置灵活
  3. 代码简洁:基于现有的firstOrCreateincrement方法实现,代码量少
  4. 测试覆盖完整:包含了基本功能、不同连接、边界情况等多种测试场景

🔍 代码分析

实现方式

  • 使用tap函数确保方法返回模型实例
  • 通过wasRecentlyCreated属性判断是否为新创建的记录
  • 对于已存在的记录调用increment方法进行递增

参数设计

  • $attributes: 查找条件的数组
  • $column: 要递增的字段名,默认为'count'
  • $default: 新记录的初始值,默认为1
  • $step: 递增步长,默认为1
  • $extra: 额外要更新的字段数组

🎯 测试用例分析

测试覆盖了以下场景:

  1. 基本的创建和递增功能
  2. 自定义初始值和步长
  3. 额外字段的更新
  4. 不同数据库连接的支持

💡 建议

  1. 文档完善:建议添加更详细的PHPDoc注释,说明每个参数的用途
  2. 类型声明:考虑为参数添加更严格的类型声明
  3. 边界情况:可以添加对负数步长的测试用例

🏆 总体评价

这是一个很好的功能补充,代码质量高,测试覆盖完整,符合Hyperf框架的设计理念。建议合并。

huangdijia
huangdijia previously approved these changes Aug 3, 2025
@limingxinleo limingxinleo changed the title Add IncrementOrCreate method to Eloquent Added method Hyperf\Database\Model\Builder::incrementOrCreate() Sep 3, 2025
@limingxinleo limingxinleo merged commit aeb4c36 into hyperf:master Sep 3, 2025
71 checks passed
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.

3 participants