import{_ as a,o as i,c as s,a2 as l}from"./chunks/framework.BbmSSMjL.js";const k=JSON.parse('{"title":"3.11 常见问题与排错","description":"","frontmatter":{},"headers":[],"relativePath":"zh/guide/faq.md","filePath":"zh/guide/faq.md"}'),t={name:"zh/guide/faq.md"};function o(d,e,h,r,c,n){return i(),s("div",null,[...e[0]||(e[0]=[l(`
A: 检查以下几点:
Authorization: Bearer <token>/api/refresh 续签)routes/api.php 的认证中间件组内(组外为公开接口)A: 权限不足,检查:
#[Permission] 注解permission 字段与注解完全一致)Table 'xxx.example' doesn't exist A: DB_PREFIX 未配置。建表 SQL 使用 laravel_ 前缀,.env 中必须保留 DB_PREFIX=laravel_,改后执行 php artisan config:clear。
A: 检查:
example_status)serializeMaps 配置是否正确php artisan dict:clear-cache// ExampleService 中的配置
protected array $serializeMaps = [
'status' => 'example_status',
];A: 检查:
use HasUniqueCheck(未启用时 uniqueFields 不生效)uniqueFields 字段名是否与入参键名一致(snake_case)checkUnique($data, $excludeId) 由基类传入 id)A: 检查 Service 中 pageOrderBy 配置:
protected array $pageOrderBy = ['field' => 'sort', 'type' => 'asc'];前端可通过 orderField / orderType 参数覆盖默认排序,但字段必须命中 pageOrderBy 默认字段与 orderFieldAllow 的并集(白名单防注入),否则被忽略。
A: 两种校验路径的响应结构不同:
data 为 {字段: [错误数组]}(code=1)data 为 null(code=1,看 msg)确认控制器方法是否类型注入了 FormRequest,以及是否误把格式规则写进了 Service。
A: create_user 取自当前登录用户(Auth::username()),需经 auth.jwt 中间件(登录态)调用;命令行/队列等无登录态场景需手动赋值。
A: 检查:
tool/example/index)views 目录下是否有对应的 .vue 文件A: 检查:
routes/api.php 中是否注册了对应路由url 一致batchDelete(请求体 ids 数组——方法为 DELETE 但仍携带 body)A: 检查:
data 应包含 records 和 total)tableData(res.records)A: 检查:
.xls 或 .xlsx(基类 _import 校验扩展名 + MIME + 10MB 上限)headerMap 中定义的中文名一致A: 项目开启了驼峰/下划线自动转换(API_CAMEL_SNAKE_CONVERT=true):
create_time → createTime(数据库字段 → 前端字段)如需原样返回,使用 Result::success($data, $msg, true)($raw=true)。
A: 检查生成配置中的父菜单 ID(.env 中 GENERATOR_PARENT_MENU_ID)是否存在,以及当前角色是否被分配了新菜单;生成后重新登录或刷新获取最新菜单。
A: 确认生成时是否勾选路由注册;手动检查 routes/api.php 中是否已有对应路由(重复注册会报错),改完执行 php artisan route:list 核对。