我正在尝试为与另一个实体具有多对一关系的实体设置创建表单。
这些是我的实体:
class EvntEvents
{
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* @ORM\OneToMany(targetEntity="EvntSessions", mappedBy="eventFk")
*
* @var ArrayCollection $sessions
*
*/
protected $sessions;
/**
* Add sessions
*
* @param Technogym\EventsBundle\Entity\EvntSessions $sessions
* @return EvntEvents
*/
public function addSession(\Technogym\EventsBundle\Entity\EvntSessions $sessions)
{
$this->sessions[] = $sessions;
return $this;
}
/**
* Get sessions
*
* @return Doctrine\Common\Collections\Collection
*/
public function getSessions()
{
return $this->sessions;
}
}
后一个实体记录已经存在,所以我想将其 id 作为隐藏字段包含在表单中,如下所示:
$entity = new EvntSessions();
$entity->setEventFk($event);
$form = $this->createForm('form_sessions', $entity);
表单显示正确,但在提交时出现以下错误:
UnexpectedTypeException:“对象或数组”类型的预期参数,给出“NULL”
所以我在绑定请求之前创建了关系:
$event->addSession($entity);
$entity->setEventFk($event);
但我收到以下错误:
PropertyAccessDeniedException:属性“id”在“EvntEvents”类中不是公共的。也许您应该创建方法“setId()”?
所以我不明白我的错误在哪里。也许我不明白他在教义关系背后的模型?