OneToOne 관계와 관련된 엔티티가 2 개 있습니다. 반대쪽을 폼에 끼워 넣었습니다. 관계 사이의 링크가 저장되지 않는다는 것을 제외하면 모든 것이 잘 작동합니다. 그래서 : "Begeleider"가 저장되고 "CompetentieProfiel"테이블이 저장되지만 "CompetentieProfiel"테이블의 "Begeleider"를 참조하는 열은 null입니다.Symfony2 관계가 저장되지 않았습니다.
아쉽게도 flush()가 호출되면 "Begeleider"객체의 "CompetentieProfiel"객체가 변수로 사용됩니다.
연락처 :
class Contact {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
}
Begeleider :
class Begeleider extends Contact {
/**
* @ORM\OneToOne(targetEntity="CompetentieProfiel", mappedBy="begeleider" ,cascade={"persist"})
*/
private $competentieProfiel;
}
CompetentieProfiel :
class CompetentieProfiel {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToOne(targetEntity="Begeleider", inversedBy="competentieProfiel",cascade={"persist"})
*/
protected $begeleider;
}
형태 :
class BegeleiderType extends AbstractType {
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('competentieProfiel', new CompetentieProfielType());
}
,
컨트롤러 :
public function createAction(Request $request) {
$entity = new Begeleider();
$form = $this->createCreateForm($entity);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
// Return the ok status and the begeleider html.
$response = new Response(
json_encode(
array(
'status' => 'ok',
)
)
);
$response->headers->set('Content-Type', 'application/json');
return $response;
}