Я создал три связанных объекта для опроса: Question
, Options
и Answer
.
/**
* @ORM\Entity(repositoryClass="App\Repository\QuestionRepository")
*/
class Question
{
// ...
/**
* @ORM\OneToMany(targetEntity="App\Entity\Answer", mappedBy="question")
*/
private $answers;
/**
* @Groups({"question"})
* @ORM\OneToMany(targetEntity="App\Entity\Options", mappedBy="question")
*/
private $options;
public function __construct()
{
$this->options = new ArrayCollection();
$this->answers = new ArrayCollection();
}
// ...
}
/**
* @ORM\Entity(repositoryClass="App\Repository\OptionsRepository")
*/
class Options
{
// ...
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Question", inversedBy="options")
* @ORM\JoinColumn(nullable=false)
*/
private $question;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Answer", mappedBy="options")
*/
private $answers;
public function __construct()
{
$this->answers = new ArrayCollection();
}
// ...
}
/**
* @ORM\Entity(repositoryClass="App\Repository\AnswerRepository")
*/
class Answer
{
// ...
/**
* @Assert\NotBlank()
* @Groups({"answer"})
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="answers")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @Groups({"answer"})
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $text;
/**
* @Groups({"answer"})
* @ORM\ManyToMany(targetEntity="App\Entity\Options", inversedBy="answers")
*/
private $options;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Question", inversedBy="answers")
* @ORM\JoinColumn(nullable=false)
*/
private $question;
public function __construct()
{
$this->options = new ArrayCollection();
}
// ...
}
App \ Form \ AnswerType:
class AnswerType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('text')
->add('user')
->add('question')
->add('options', EntityType::class, [
'class' => Options::class,
'multiple' => true
])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Answer::class,
'csrf_protection' => false
]);
}
}
Мне нужно сохранить результаты опроса в Answer
объекте.Как я могу обработать этот почтовый запрос?Этот запрос будет отправлен в форме отправки.Каждая строка Answer
является вложенным объектом JSON.
[
{
"question": "1",
"user": "1",
"text": "",
"options": [
"1",
"2",
"3"
]
},
{
"question": "2",
"user": "1",
"text": "text",
"options": [
""
]
},
{
"question": "3",
"user": "1",
"text": "",
"options": [
"4"
]
}
]
В результате каждый из этих вложенных объектов JSON (вопрос, пользователь, текст, параметры) должен стать строкой в таблице ответов.Я имею в виду, что свойство объекта json question
должно иметь место в столбце question_id
в таблице Answer
и т. Д.