我正在尝试为与另一个实体有多对一关系的实体设置创建表单。
这些是我的实体:
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:类型为“object or array”的预期参数,“NULL”给出
所以我在绑定请求之前创建了关系:
$event->addSession($entity);
$entity->setEventFk($event);
但是我收到以下错误:
PropertyAccessDeniedException:属性“id”在“EvntEvents”类中不公开。也许你应该创建方法“setId()”?
所以我不明白我的错误在哪里。也许我不理解他在学说关系背后的模范?