/admin/task-user-progress 页面编辑正常任务时,条件会丢失在 TaskUserProgressController 的表单配置中,achievement_condition_id 字段的选项配置错误:
错误代码:
$form->select('achievement_condition_id', '达成条件ID')->options(function () {
return \App\Module\Task\Models\TaskCondition::pluck('name', 'id');
})->required();
问题分析:
TaskCondition::pluck('name', 'id') 获取选项achievement_condition_id 字段实际关联的是 task_achievement_conditions 表task_conditions 表task_user_progress.achievement_condition_id → task_achievement_conditions.idtask_achievement_conditions.condition_id → task_conditions.id修改 app/Module/Task/AdminControllers/TaskUserProgressController.php 第154-156行:
修复后代码:
$form->select('achievement_condition_id', '达成条件ID')->options(function () {
return \App\Module\Task\Models\TaskAchievementCondition::with('condition')
->get()
->pluck('condition.name', 'id');
})->required();
TaskAchievementCondition 模型而不是 TaskConditionwith('condition') 预加载关联的条件信息pluck('condition.name', 'id') 获取正确的选项映射/admin/task-user-progress✅ 修复前: "达成条件ID"字段显示为空或"未知条件"
✅ 修复后: "达成条件ID"字段正确显示"宠物经验累计"等条件名称
✅ 编辑保存: 条件信息正确保留,不会丢失
发现并清理了一条错误的数据记录:
achievement_condition_id=6 的错误记录(应该是TaskAchievementCondition的ID,不是TaskCondition的ID)achievement_condition_id=1 的记录app/Module/Task/AdminControllers/TaskUserProgressController.php成功修复了后台用户任务进度编辑页面条件丢失的问题。问题的根本原因是表单字段配置错误,使用了错误的模型获取选项数据。通过修正模型关联和选项配置,确保了表单能正确显示和保存条件信息。