두 엔티티간에 양방향 일대일 관계를 설정하는 데 문제가 있습니다. 다른 엔티티 "DonationData"를 참조 할 수있는 엔티티 "Campaign"이 있습니다. 생성 된 기부 데이터는 항상 캠페인에 연결됩니다. DonationData 엔터티에서 관련 캠페인을 찾을 수 있기를 원하기 때문에 양방향 관계가 필요합니다.Symfony2 & Doctrine : id 참조의 일대일 관계 및 지속성
<?php
/**
* @ORM\Entity
* ...
*/
class Campaign
{
...
/**
* @ORM\OneToOne(targetEntity="DonationData", mappedBy="campaign", cascade={"persist", "remove"})
*/
protected $donationData;
...
/**
* Set donationData
*
* @param DonationData $donationData
* @return Campaign
*/
public function setDonationData(DonationData $donationData = null)
{
$this->donationData = $donationData;
return $this;
}
...
?>
그리고 내 DonationData 실체에 대한 관련 코드 :
이
내 캠페인 엔터티에 대한 코드입니다<?php
/**
* @ORM\Entity
* ...
*/
class DonationData
{
...
/**
* @ORM\OneToOne(targetEntity="Campaign")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="campaign_id", referencedColumnName="id")
* })
*/
protected $campaign;
...
/**
* Set campaign
* @param Campaign $campaign
*
* @return DonationData
*/
public function setCampaign($campaign)
{
$this->campaign = $campaign;
return $this;
}
...
?>
내가 내 DonationData 양식을 추가 해요 코드의 조각 내 캠페인 양식 (CampaignType.php)
<?php
...
->add('donationData', new DonationDataType(), array(
'label' => false
))
...
?>
그리고 CampaignController.php 쪽에서 내가 h 일 때 창조 작업을 andling 것은, 난 아무것도 변경하지 않은 : 난 그냥 요청에서 바인더 제본 관련 기업을 지속하고 엔티티 관리자 플러싱 해요 : 나는 캠페인 엔티티를 유지하고자 할 때
<?php
...
$em->persist($campaign);
$em->flush();
...
?>
내 문제를 내부에 DonationData 양식이 포함 된 양식. Campaign과 DonationData 엔티티를 모두 성공적으로 유지하지만 Campaign 엔트리에 지속되는 donation_data_id 참조 만 있습니다. 데이터베이스에서 지속 된 DonationData를 볼 때 campaign_id는 항상 NULL로 설정됩니다.
설명이 표시됩니까?
감사합니다. 클래스 DonationData에서
주와 같이
: 나는 그것을 지속 할 수있는 유일한 방법은 수동으로 지속하기 전에 DonationData에 대한 캠페인을 설정하는 것입니다. 그러나, 그것은 정말로 "일반적인"것이 아니라 그것을 할 수있는 깨끗한 방법입니다. 나는 그것이 수동이어야한다고 생각한다. 내가 맞습니까? – MeuhMeuh