私はこの関数 duplicateCourseAction を持っており、その目標は ... Course オブジェクトを複製することです
public function duplicateCourseAction(Request $request) {
if ($this->getRequest()->isXmlHttpRequest() == false) {
return new Response("Bad request", 405);
}
$em = $this->getDoctrine()->getManager();
$parameters = $request->request->all();
$course = $em->getRepository('EntTimeBundle:Course')->findOneById($parameters['id']);
$duplicate = clone $course;
$duplicate->setDate(new \DateTime($parameters['date']));
$em->persist($duplicate);
$em->flush();
return new Response("200");
}
ドキュメントによると、「clone」キーワードは表面コピー (参照コピー) を作成します。Course エンティティには他のエンティティとの多くの関係が含まれているため、これは明らかに私が望んでいるものではありません。値のコピーが必要です。
unserialize(serialize(object)) トリックを発見しました:
public function duplicateCourseAction(Request $request) {
if ($this->getRequest()->isXmlHttpRequest() == false) {
return new Response("Bad request", 405);
}
$em = $this->getDoctrine()->getManager();
$parameters = $request->request->all();
$course = $em->getRepository('EntTimeBundle:Course')->findOneById($parameters['id']);
$duplicate = unserialize(serialize($course));
$duplicate->setDate(new \DateTime($parameters['date']));
$em->persist($duplicate);
$em->flush();
return new Response("200");
}
しかし、私は Doctrine でこのエラーがあります:
注意: 未定義のインデックス: /home/mart_q/Diderot/ent/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php 行 2776 の 000000003ed2e9ea00000000ee270fde