Household エンティティは、Address エンティティと 1 対多のリレーションシップを持ちます。Netbeans デバッグで編集アクションを実行すると、リクエスト オブジェクトにアドレスが表示されますが、リクエストがバインドされるとアドレスが表示されなくなります (スナップショット = 配列 [0])。したがって、アドレスを永続化することはできません。
世帯実体 (一部):
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\OneToMany(targetEntity="Mana\ClientBundle\Entity\Address", mappedBy="household",cascade={"persist"})
*/
private $addresses;
/**
* Add addresses
*
* @param \Mana\ClientBundle\Entity\Address $addresses
* @return Household
*/
public function addAddress(Address $address) {
$this->addresses[] = $address;
return $this;
}
住所エンティティ (一部):
/**
* @var \Mana\ClientBundle\Entity\Household
*
* @ORM\ManyToOne(targetEntity="Mana\ClientBundle\Entity\Household", inversedBy="addresses")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="household_id", referencedColumnName="id")
* })
*/
private $household;
/**
* Set household
*
* @param \Mana\ClientBundle\Entity\Household $household
* @return Address
*/
public function setHousehold(\Mana\ClientBundle\Entity\Household $household = null)
{
$this->household = $household;
return $this;
}
編集アクション (一部):
public function updateAction($id, Request $request) {
$em = $this->getDoctrine()->getManager();
$household = $em->getRepository('ManaClientBundle:Household')->find($id);
if (!$household) {
throw $this->createNotFoundException('Unable to find Household.');
}
$form = $this->createForm(new HouseholdType(), $household);
$form->bind($request); // address in $request
if ($form->isValid()) {
$members = $household->getMembers(); // this has members
$addresses = $household->getAddresses(); // this has no addresses
...
}