adminModel = new AdminModel(); $this->storeModel = new StoreModel(); } public function search($text = null) { $admins = $this->adminModel->findAdmins($text)->toArray(); $store_ids = []; foreach ($admins as &$admin) { $admin['store_ids'] = $admin['store_ids'] ? explode(',', $admin['store_ids']) : []; $store_ids = array_unique(array_merge($store_ids, $admin['store_ids'])); } $stores = $this->storeModel->findByIds($store_ids)->toArray(); $fmt_stores = []; foreach ($stores as $store) { $fmt_stores[$store['id']] = $store; } foreach ($admins as &$admin) { $now_stores = array_map(function ($store_id) use ($fmt_stores){ return $fmt_stores[$store_id]; }, $admin['store_ids']); $admin['stores'] = $now_stores; } return $admins; } public function fetchMenus($admin_id) { $admin = $this->adminModel->findById($admin_id); $group = $admin['access']['group']; $fmt_reception_rules = []; foreach (fetchReceptionRules() as $rule) { $fmt_reception_rules[$rule['id']] = $rule; } $reception_rule_ids = $group->reception_rules ? explode(',', $group->reception_rules) : []; return array_map(function ($id) use($fmt_reception_rules) { return $fmt_reception_rules[$id]; },$reception_rule_ids); } }