我有一个使用 Symfony + Mongodb 作为后端 和 Angular2 作为前端 构建的项目。我会尽力解释我的问题,以获得最佳答案。
我的实体是:
问题 回答 投票
每个问题都可以有很多答案,每个答案都有很多选票。用户可以对每个问题的答案(并且只能投票)进行投票。
嗯。我有一个 Controller ,它返回主页的一系列问题
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);
}
没什么特别的。我想要的是以下内容:对于每个问题,如果用户对其答案之一进行投票,那么我可以在前端中显示一个标签,标记用户投票的答案。
我怀疑这样做的最佳选择。我的事情:
- 获取所有问题,遍历php中的questions数组,对每个问题进行查询,获取投票数(如果存在)
- 因为问题数组是水合的,所以用 PHP 迭代寻找投票。
- 也许还有其他我没想到的选择。
谢谢
最佳答案
首先,您应该使用 Doctrine 并为您的问题实现具有必要方法的多对一。 如果由于某种原因你不能: 对与给定用户的投票相结合的答案表进行一次查询。询问 question_id 在 [array] 中的所有内容(array 是您已经获得的问题 ID 的数组)。一旦您收到行,请检查每个问题的 ID 是否存在于您从数据库收到的行中。
关于php - 有一系列问题,我需要检查用户是否在每个问题中投票了任何答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40765698/