1

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
    ...
    }
4

1 に答える 1