update
This commit is contained in:
@@ -2111,13 +2111,17 @@ class DiagnosisLogic extends BaseLogic
|
||||
public static function getAssistants()
|
||||
{
|
||||
try {
|
||||
// 通过中间表查询角色ID为2的管理员(医助)
|
||||
$assistants = \app\common\model\auth\Admin::alias('a')
|
||||
// 这里不要用 Admin 模型查询,否则会触发其 append(role_id/dept_id/jobs_id)
|
||||
// 每行再发多次查询,形成严重 N+1,统计页会被拖慢到十几秒。
|
||||
$assistants = \think\facade\Db::name('admin')
|
||||
->alias('a')
|
||||
->join('admin_role ar', 'a.id = ar.admin_id')
|
||||
->where('ar.role_id', 2)
|
||||
->where('a.disable', 0)
|
||||
->whereNull('a.delete_time')
|
||||
->field(['a.id', 'a.name', 'a.account'])
|
||||
->order('a.id', 'asc')
|
||||
->distinct(true)
|
||||
->select()
|
||||
->toArray();
|
||||
|
||||
@@ -2126,7 +2130,8 @@ class DiagnosisLogic extends BaseLogic
|
||||
}
|
||||
|
||||
$adminIds = array_column($assistants, 'id');
|
||||
$adminDepts = \app\common\model\auth\AdminDept::whereIn('admin_id', $adminIds)
|
||||
$adminDepts = \think\facade\Db::name('admin_dept')
|
||||
->whereIn('admin_id', $adminIds)
|
||||
->select()
|
||||
->toArray();
|
||||
$adminToDeptIds = [];
|
||||
@@ -2148,7 +2153,8 @@ class DiagnosisLogic extends BaseLogic
|
||||
$allDeptIds = array_keys($allDeptIds);
|
||||
$deptNameMap = [];
|
||||
if ($allDeptIds !== []) {
|
||||
$deptNameMap = \app\common\model\dept\Dept::whereIn('id', $allDeptIds)
|
||||
$deptNameMap = \think\facade\Db::name('dept')
|
||||
->whereIn('id', $allDeptIds)
|
||||
->whereNull('delete_time')
|
||||
->column('name', 'id');
|
||||
}
|
||||
@@ -2185,13 +2191,16 @@ class DiagnosisLogic extends BaseLogic
|
||||
public static function getDoctors()
|
||||
{
|
||||
try {
|
||||
// 通过中间表查询角色ID为1的管理员(医生)
|
||||
$doctors = \app\common\model\auth\Admin::alias('a')
|
||||
// 同 getAssistants,避免 Admin 模型 append 触发的 N+1。
|
||||
$doctors = \think\facade\Db::name('admin')
|
||||
->alias('a')
|
||||
->join('admin_role ar', 'a.id = ar.admin_id')
|
||||
->where('ar.role_id', 1)
|
||||
->where('a.disable', 0)
|
||||
->whereNull('a.delete_time')
|
||||
->field(['a.id', 'a.name', 'a.account'])
|
||||
->order('a.id', 'asc')
|
||||
->distinct(true)
|
||||
->select()
|
||||
->toArray();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user