我有一个用Symfony + Mongodb构建的项目作为后端一个Angular2作为前端。为了得到最好的答案,我会尽力解释我的问题。
我的实体是:
问题 回答 表决
每个问题可以有很多答案,每个答案都有很多票。用户可以在每个问题中投票(并且只有一个)。
好。我有一个控制器,返回主页的问题数组
public function getQuestions(ParamFetcher $paramFetcher) {
$em = $this->get('doctrine_mongodb')->getManager();
$questionRepo = $em->getRepository('ThisOrThisBaseBundle:Question');
$categoryRepo = $em->getRepository('ThisOrThisBaseBundle:QuestionCategory');
$page = $paramFetcher->get('page',1);
$categoryId = $paramFetcher->get('categoryId',false);
$category = ($categoryId) ? $categoryRepo->findOneById($categoryId) : false;
$dev = $questionRepo->findQuestionsPaginated($category,$page-1);
$view = View::create()->setData($dev->toArray(false));
return $this->get('fos_rest.view_handler')->handle($view);
}
没什么特别的。我想要的是以下内容:对于每个问题,如果用户投票给其中一个答案,那么我可以在前端中显示一个标签,标记用户投票的答案。
我怀疑是做这件事的最佳选择。我的事情是:
谢谢
答案 0 :(得分:0)
首先,您应该使用Doctrine并使用必要的方法实现多对一。 如果由于某种原因你不能: 对使用给定用户的投票加入的答案表进行单个查询。询问[数组]中question_id所在的所有内容(数组是您已经获得的一系列问题ID)。收到行后,如果其ID存在于您从DB收到的行中,请检查每个问题。