types()
types() : array
字典类型列表(附每类数据项总数统计,含停用,管理端视角)。
字典服务
职责:字典类型管理 + 字典数据管理(平铺 + 树形)。按 type_code 缓存 (CacheManager sys_dict_data/sys_dict_tree),修改后自动清除; 并提供按 type_code+value 定位的便捷读写入口供业务代码一行调用。
┌────────────────── 分区导航(按此顺序阅读)──────────────────┐ 分区 1 · 查询(读) types / data / tree / options / getItem 分区 2 · 类型写操作 createType / updateType / deleteType 分区 3 · 数据写操作 createData / updateData / deleteData 分区 4 · 便捷写操作 upsertItem / updateItem / deleteItem 分区 5 · 内部辅助 deleteRecursive / validateParent / collectDescendantIds / clearCache └────────────────────────────────────────────────────────────┘
upsertItem(string $typeCode, string $value, string $label, array $extra = []) : \App\Models\SysDictData
新增/更新字典项:不存在则新增,存在则按 value 覆盖(upsert 语义)。
业务代码最常用入口——「往性别字典加个人妖」: app(DataDictService::class)->upsertItem('gender', 'unknown', '人妖'); 树形类型:$extra['parent_value'] 指定父级(默认顶级)。
| string | $typeCode | 字典类型编码(如 gender / org_kind) |
| string | $value | 存储值 |
| string | $label | 显示文本 |
| array | $extra | 可选覆盖:status/sort/css_class/remark/parent_value |
updateItem(string $typeCode, string $value, string $label, array $extra = []) : \App\Models\SysDictData
按 value 定位修改字典项的显示文本(或 extra 里的其他字段)。
app(DataDictService::class)->updateItem('gender', 'unknown', '男变女'); app(DataDictService::class)->updateItem('gender', 'unknown', '男变女', ['sort' => 9]);
| string | $typeCode | |
| string | $value | |
| string | $label | |
| array | $extra |
validateParent(array $data, ?\App\Models\SysDictData $self = null, bool $checkUnique = true) : void
字典数据项父级校验: - 平铺类型(is_tree=0)强制 parent_id=0 - 父级必须存在且属于同一类型(禁止跨类型挂接) - 禁止自引用 / 后代引用(防环) - 同父下 value 唯一(应用层预检,DB 唯一索引兜底并发;upsert 场景可关闭)
| array | $data | |
| ?\App\Models\SysDictData | $self | |
| bool | $checkUnique |