Doctrine ORM ManyToOne Inverse 不起作用
Posted
技术标签:
【中文标题】Doctrine ORM ManyToOne Inverse 不起作用【英文标题】:Doctrine ORM ManyToOne Inverse not working 【发布时间】:2018-11-29 19:16:46 【问题描述】:我有一个双向多对一对多关系,只在一个方向上工作,有人可以帮忙吗?为了清晰起见,我试图将示例精简为最少的代码。
Question 实体可以有多个 Answer 实体。
问题实体
class CwEmployeeQuestion
public function __construct()
$this->cw_employee_answers = new \Doctrine\Common\Collections\ArrayCollection();
/**
* @ORM\Column(type="guid")
* @ORM\Id
* @ORM\GeneratedValue(strategy="UUID")
*/
protected $id;
/**
* @ORM\OneToMany(targetEntity="Fitchek\Entity\Corporate\CwEmployeeAnswer", mappedBy="cw_employee_question")
*/
protected $cw_employee_answers;
/**
* Get CwEmployeeAnswer
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getCwEmployeeAnswer()
return $this->cw_employee_answers;
回答实体
class CwEmployeeAnswer
/**
* @ORM\Column(type="guid")
* @ORM\Id
* @ORM\GeneratedValue(strategy="UUID")
*/
protected $id;
/**
* Many CwEmployeeAnswer have One CwEmployeeQuestion.
*
* @var \Fitchek\Entity\Corporate\CwEmployeeQuestion $cw_employee_question
*
* @ORM\ManyToOne(targetEntity="Fitchek\Entity\Corporate\CwEmployeeQuestion", inversedBy="cw_employee_answer")
* @ORM\JoinColumn(name="cw_employee_question", referencedColumnName="id")
*/
protected $cw_employee_question;
/**
* Set $cw_employee_question
*
* @param \Fitchek\Entity\Corporate\CwEmployeeQuestion $cw_employee_question
* @return CwEmployeeAnswer
*/
public function setCwEmployeeQuestion(?\Fitchek\Entity\Corporate\CwEmployeeQuestion $cw_employee_question = null): self
$this->cw_employee_question = $cw_employee_question;
return $this;
/**
* Get $cw_employee_question
*
* @return \Fitchek\Entity\Corporate\CwEmployeeQuestion
*/
public function getCwEmployeeQuestion(): ?CwEmployeeQuestion
return $this->cw_employee_question;
/**
*
* @inheritdoc
*
* @param JSON $json, the request JSON to create a new CwEmployeeAnswer
* @return CwEmployeeAnswer the newly created CwEmployeeAnswer
*/
public function createFromData($json, $cw_employee_question = null)
$this->setCwEmployeeQuestion($cw_employee_question);
return $this;
当我尝试方向 answer->question 时,它工作正常,并返回给我一个答案列表,其中包含作为 JSON 一部分的相关问题。例如:
[
"id": 1
"name": "answer 1",
"question" :
"name": "question 1"
...
]
但是,当查询另一个方向以获取所有问题及其答案作为返回 JSON 的一部分时,问题数组返回为 null。例如:
[
"id": 1
"name": "question 1",
"answers": null
...
]
当我想看到的是:
[
"id": 1
"name": "question 1",
"answers" : [
"name": "answer 1"
,
"name": "answer 2"
...
]
...
]
【问题讨论】:
【参考方案1】:好像没问题。可能只是一个错字。
尝试使用inversedBy="cw_employee_answers"
(复数为$cw_employee_answers)而不是inversedBy="cw_employee_answer"
它应该可以工作。
【讨论】:
以上是关于Doctrine ORM ManyToOne Inverse 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Doctrine ORM ManyToOne Inverse 不起作用
使用 Doctrine ORM ManyToOne 关系在相反方向获取实体