我为调查创建了三个相关实体:Survey
,Question
和Options
。
class Question
{
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Survey", inversedBy="questions")
* @ORM\JoinColumn(nullable=true)
*/
private $survey;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Options", mappedBy="Question")
*/
private $options;
}
class Survey
{
/**
* @ORM\OneToMany(targetEntity="App\Entity\Question", mappedBy="Survey")
*/
private $questions;
}
class Options
{
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Question", inversedBy="options")
* @ORM\JoinColumn(nullable=true)
*/
private $question;
}
我可以首先查询单个Survey
对象。然后,Doctrine进行第二次查询以检索相关的Question
对象。
public function showQuestions($id)
{
$survey= $this->getDoctrine()
->getRepository(Survey::class)
->find($id);
$questions = $survey->getQuestions();
}
然后我可以使用symfony/serializer
将结果序列化为json。
{
"survey": [
{
"questions": [
{
"name": "question1",
"options": []
}
}
]
}
但是我没有得到Option
实体。当然Options
json对象属性为空。我怎么能得到它?