public function __invoke() { // 检查登录 $session = $this->getSession(); if (empty($session['user'])) { $session->addFlash('error', '请先登录'); return new RedirectResponse($this->generateUrl('user_login')); } $user = UserModel::getUser($session['user']['id']); $request = $this->getRequest(); $type = $request->query->get('type'); if (!$type) { $type = 'post'; } $page = $request->query->get('page'); if (!$page) { $page = 1; } $size = 10; $pager = null; if ($type == 'post') { $pager = ThreadModel::listForumThreads($page, $size, function (QueryBuilder $qb) use($user) { /** @var UserModel $user */ $qb->andWhere($qb->expr()->eq('author_id', ':author_id'))->setParameter(':author_id', $user->id); }); $data = $pager->getData(); foreach ($data as $key => $value) { $forum_id = $value['forum_id']; $forum = ForumModel::getForum($forum_id); $value['forum'] = $forum; $data[$key] = $value; } $pager->setData($data); } elseif ($type == 'reply') { $data = PostModel::getPostsWhere(function (QueryBuilder $qb) use($user) { /** @var UserModel $user */ $qb->andWhere($qb->expr()->eq('author_id', ':author_id'))->setParameter(':author_id', $user->id); }); $thread_ids = array(); foreach ($data as $key => $value) { $thread_ids[] = $value['thread_id']; } $thread_ids = array_unique($thread_ids); $pager = ThreadModel::listForumThreads($page, $size, function (QueryBuilder $qb) use($thread_ids) { /** @var UserModel $user */ $qb->andWhere($qb->expr()->in('thread_id', $thread_ids)); }); $data = $pager->getData(); foreach ($data as $key => $value) { $forum_id = $value['forum_id']; $forum = ForumModel::getForum($forum_id); $value['forum'] = $forum; $data[$key] = $value; } $pager->setData($data); } $pager->setQuery(array('type' => $type)); return $this->render('thread/my.html.twig', array('pager' => $pager)); }