php - 有一系列问题,我需要检查用户是否在每个问题中投票了任何答案

标签 php mysql mongodb symfony

我有一个使用 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/

相关文章:

php - 在 Codeigniter 电子邮件库中调用发送方法时出错

PHP、MySQL : print a DB field based on the result of two other DB fields

php - 发布/获取 excel 数据的最佳方式是什么

Mysql 选择 4 个表,计数为 3

javascript - 使用 dpd -d 启动 MongoDB 失败

mongodb - 使用出站连接调用 mongoDb 的 dotnet core lambda 端点在三十秒后返回超时错误

c# - 如何通过 Unity 访问服务器上的 PHP 文件以进行 MySQL 数据库操作?

mysql - 带有外部 MySQL 的 Backand 中的多边形对象支持

php - 如何从使用 PHP 和 MYSQL 的嵌套模型集中删除节点

Spring Mongodb 查询(如果 id 不为空)