$article) { $articles[$key]['tags'] = json_decode($article['tags'], true); } return $articles; } public function handleCategories(array $articles) { $categories = $this->getCategories(); foreach ($articles as $key => $article) { $articles[$key]['category'] = $categories[$article['category_id']] ?? null; } return $articles; } public function handleUsers(array $articles) { $users = $this->getUsers($articles); foreach ($articles as $key => $article) { $articles[$key]['owner'] = $users[$article['owner_id']] ?? null; } return $articles; } public function getCategories() { $cache = new CategoryAllListCache(); $items = $cache->get(CategoryModel::TYPE_ARTICLE); if (empty($items)) return []; $result = []; foreach ($items as $item) { $result[$item['id']] = [ 'id' => $item['id'], 'name' => $item['name'], ]; } return $result; } public function getUsers($articles) { $ids = kg_array_column($articles, 'owner_id'); return $this->getShallowUserByIds($ids); } }