Php Symfony 3测验项目

Php Symfony 3测验项目,php,symfony,doctrine,Php,Symfony,Doctrine,我是Symfony框架的新手。我想做一个简单的小测验,有一些问题和答案。我的问题是只显示一个问题和答案。当我尝试时,它会显示问题的下拉列表和所有问题的所有答案 我的数据库是: questions: - id PK - question answers: - id PK - answer choices: - id PK - questions_id FK - answers_id FK - isCorrect QuizController: <?php

我是Symfony框架的新手。我想做一个简单的小测验,有一些问题和答案。我的问题是只显示一个问题和答案。当我尝试时,它会显示问题的下拉列表和所有问题的所有答案

我的数据库是:

questions:
  - id PK
  - question
answers:
  - id PK
  - answer
choices:
  - id PK
  - questions_id FK
  - answers_id FK
  - isCorrect
QuizController:

<?php

namespace AppBundle\Controller;

use Symfony\Component\HttpFoundation\Response;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use AppBundle\Entity\Questions;
use AppBundle\Entity\Answers;
use AppBundle\Entity\Choices;
use Symfony\Component\HttpFoundation\Request;
use AppBundle\Form\QuizType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;

class QuizController extends Controller
{
    /**
     * @Route("/quiz", name="quiz_index")
     * @param Request $request
     * @return Response
     */
     public function formAction(Request $request)
     {
         $choice = new Choices();
         $form = $this->createForm(QuizType::class, $choice);

         return $this->render("Quiz/quiz.html.twig", ["form" => $form->createView()]);
     }
}

如我所见,您使用的是多对多关系,每个答案可能与多个问题相关,还是一个问题有多个答案,一个答案属于一个问题?这应该是第二个选项:一个问题有多个答案,一个答案属于一个问题。那么我应该改变我的数据库结构吗?是的,你应该改变它上面的模式告诉你有一个多对多关系商店,所以你需要将它改为一对多,表格会自动显示与该问题表格相关的答案,别忘了添加“isCorrect”回答entityPS上的字段:请避免以复数形式命名实体类(Answers=>answer),您正在使用answer类型的对象谢谢您提供有关命名的建议。不幸的是,当我删除了表格“选项”并改变了“答案”和“问题”的关系时,我的表格显示了所有问题的所有答案。
<?php

namespace AppBundle\Form;

use AppBundle\Entity\Answers;
use AppBundle\Entity\Questions;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;

class QuizType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('question')
            ->add('answer', EntityType::class, array(
                'class' => Answers::class,
                'multiple' => false,
                'expanded' => true,))
            ->add("submit", SubmitType::class, ["label" => "Zapisz"]);
    }
}
{% extends 'base.html.twig' %}

{% block body %}
    {{ form(form, {'attr': {'novalidate': 'novalidate'}}) }}
{% endblock %}