CRUD 服务
XinAdmin 提供了 BaseService 抽象基类,封装了常用的 CRUD 操作、数据验证和查询构建功能,让开发者可以快速构建业务服务层。
基本用法
创建一个服务类继承 BaseService,并定义 $model 属性指向对应的 Eloquent 模型:
继承后,服务类自动拥有以下方法:
搜索字段配置
$searchField - 精确搜索字段
定义支持搜索的字段及其查询操作符:
操作符说明:
$quickSearchField - 快速搜索字段
定义支持关键词搜索的字段,用于全局模糊搜索:
前端传入 keywordSearch 参数时,会在所有快速搜索字段中进行模糊匹配:
查询参数
query() 方法支持以下请求参数:
分页参数
filter - 筛选条件
用于多值筛选,支持 JSON 字符串或数组格式:
生成的 SQL:
keywordSearch - 关键词搜索
在 $quickSearchField 定义的字段中进行全局模糊搜索:
sorter - 排序
支持单字段排序,值为 ascend(升序)或 descend(降序):
搜索字段参数
根据 $searchField 定义的字段传入对应参数:
数据验证
定义验证规则
重写 rules() 方法定义验证规则:
定义验证消息
重写 messages() 方法定义自定义错误消息:
区分创建和更新验证
使用 isUpdate() 方法判断是否为更新请求:
完整示例
树形数据
getTreeData() 方法用于构建树形结构数据:
数据要求:
- 数据必须包含
id和parent_id字段 - 根节点的
parent_id默认为0 - 生成的子节点存放在
children字段中
异常处理
BaseService 使用 RepositoryException 抛出异常:
异常会被全局异常处理器捕获并返回统一的 JSON 响应。
扩展方法
可以在子类中扩展或覆盖父类方法: