別のエンティティと多対 1 の関係を持つエンティティの作成フォームを設定しようとしています。
これらは私のエンティティです:
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()」を作成する必要がありますか?
だから私は私の間違いがどこにあるのか分かりません。多分私は彼が教義関係の背後にあるモデルを理解していないのですか?