FastAdmin多表联查进阶玩法:如何优雅处理员工-部门层级数据?
当企业管理系统需要展示员工所属部门信息时,简单的单表查询往往无法满足需求。FastAdmin作为一款高效的PHP开发框架,其关联模型功能为这类多表联查场景提供了优雅的解决方案。本文将深入探讨如何利用belongsTo与hasMany关系处理复杂的业务数据关联。
1. 关联模型基础配置
在FastAdmin中建立模型关联前,需先理清数据结构。假设我们有两张核心表:
-
fa_employee(员工表)id: 员工IDname: 员工姓名department_id: 所属部门ID
-
fa_department(部门表)id: 部门IDname: 部门名称parent_id: 上级部门ID
基础belongsTo关联配置:
// Employee模型
public function department()
{
return $this->belongsTo('app\admin\model\Department', 'department_id', 'id');
}
这种基础关联能满足简单的部门信息查询,但在实际业务中常遇到更复杂的需求:
- 需要同时获取部门的层级路径(如"总部/技术部/前端组")
- 需要按部门属性筛选员工
- 需要统计各部门员工数量
2. 多层关联与字段过滤
当需要处理部门的多级层级时,可以在Department模型中建立自关联:
// Department模型
public function parent()
{
return $this->belongsTo('app\admin\model\Department', 'parent_id', 'id');
}
public function children()
{
return $this->hasMany('app\admin\model\Department', 'par


5282

被折叠的 条评论
为什么被折叠?



