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; } }