配方新增功能失败,访问 http://kku_laravel.local.gd/admin/game-items-recipes/create 时出现数据库字段缺失错误。
[2025-06-07T21:02:46.043654+08:00] laravel.ERROR: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'success_rate' in 'field list' (Connection: mysql, SQL: insert into `kku_item_recipes` (`name`, `code`, `description`, `consume_group_id`, `reward_group_id`, `condition_group_id`, `success_rate`, `cooldown_seconds`, `sort_order`, `is_active`, `updated_at`, `created_at`) values (合成钢铁, gangtie, ?, 28, 38, ?, 1, 0, 0, 1, 2025-06-07 21:02:46, 2025-06-07 21:02:46))
数据库表 kku_item_recipes 中缺少 success_rate 和 cooldown_seconds 字段,但控制器和模型代码中使用了这些字段,导致数据库结构与代码不一致。
为 kku_item_recipes 表添加缺失的字段:
ALTER TABLE kku_item_recipes
ADD COLUMN success_rate decimal(5,4) DEFAULT 1.0000 COMMENT '成功率(0-1之间的小数)' AFTER condition_group_id,
ADD COLUMN cooldown_seconds int DEFAULT 0 COMMENT '冷却时间(秒)' AFTER success_rate;
更新 app/Module/GameItems/Models/ItemRecipe.php:
success_rate 和 cooldown_seconds 字段$fillable 数组中添加这两个字段$casts 数组中添加字段类型转换更新 app/Module/GameItems/Databases/GenerateSql/item_recipes.sql 文件,添加缺失的字段定义。
使用MCP浏览器测试配方新增功能:
SELECT * FROM kku_item_recipes WHERE code = 'test_steel_craft';
结果显示数据成功插入,包括新添加的字段都正确保存。
app/Module/GameItems/Models/ItemRecipe.phpapp/Module/GameItems/Databases/GenerateSql/item_recipes.sqlgit add .
git commit -m "修复配方新增失败问题:添加缺失的success_rate和cooldown_seconds字段
- 为kku_item_recipes表添加success_rate和cooldown_seconds字段
- 更新ItemRecipe模型的fillable和casts属性
- 更新自动生成的SQL文件
- 通过MCP测试验证修复成功"
git push
✅ 配方新增功能修复成功 ✅ 数据库结构与代码保持一致 ✅ 通过MCP测试验证功能正常 ✅ 代码已提交并推送到远程仓库