Frame与Photo具有单向oneToOne关联。
现在一切都按预期工作:
$photo = new Photo();
$another_photo = new Photo();
$frame = new Frame();
$frame->setPhoto($photo);
$em->persist($frame);
$em->flush();
创建了框架和两张照片,并且框架与数据库中的$ photo相关联。我可以使用getPhoto()查询$ frame并获取$ photo。
但是我想现在更新一张相框的照片,它不起作用:
$frame = $em->getRepository('Frame')->findOneById(id_of_frame);
$frame->setPhoto($another_photo);
$em->persist($frame);
$em->flush();
并获得一个学说错误: 通过“Frame#Photo”关系找到了一个新实体,该关系未配置为级联实体的持久操作。明确保留新实体或在关系上配置级联持久操作。
我可以在Frame OneToOne关系中设置cascade =“persist”并且错误不再发生但是我得到一个关于我在照片中使用的不持久颜色的新错误,我真的没有设置和想要: (
为什么我会得到错误?为什么我需要持久保存帧和照片?
谢谢!
答案 0 :(得分:1)
你是如何创造$ anothor_photo的? 由于它已经在数据库中,您需要执行以下操作: $ another_photo = $ entityManager-> getReference('Photo',$ another_photo_id);
顺便说一句,整个级联事情可能变得相当混乱。我认为您会发现在创建新照片时保持新照片更安全。