用户报告通过php artisan debug:reproduce-error request_1750056014272命令验证时出现错误,需要查看日志并修复问题。
通过分析代码发现问题出现在UserActivityService::getLastActivityTime方法中:
last_login_time和last_activity_time字段在数据库中是timestamp类型getLastActivityTime方法声明返回?Carbon,但实际可能返回字符串,导致类型不匹配在UserInfo模型中添加正确的字段类型转换(cast):
app/Module/User/Models/UserInfo.php修改前:
protected $casts = [
'status' => STATUS::class,
];
修改后:
protected $casts = [
'status' => STATUS::class,
'last_login_time' => 'datetime',
'last_activity_time' => 'datetime',
];
使用原始的验证命令进行测试:
php artisan debug:reproduce-error request_1750056014272
验证成功:
$casts属性,确保数据库字段始终转换为指定的PHP类型app/Module/User/Models/UserInfo.php - 添加时间字段castapp/Module/User/Services/UserActivityService.php - 受益于修复的服务类修复UserInfo模型中时间字段类型转换问题
- 在UserInfo模型中添加last_login_time和last_activity_time字段的datetime cast
- 解决UserActivityService::getLastActivityTime方法返回类型不一致的问题
- 确保时间字段始终返回Carbon对象而不是字符串
- 通过debug:reproduce-error命令验证修复有效
通过添加正确的字段类型转换,解决了UserInfo模型中时间字段返回类型不一致的问题,确保了UserActivityService服务的正常运行。这是一个典型的Laravel模型字段类型处理问题,体现了明确定义字段cast的重要性。