我将Symfony与Doctrine结合使用。
$ members的注释(getMembers()返回此变量):
/**
* @var User
* @MongoDB\ReferenceMany(targetDocument="something", storeAs="dbRef")
* @Assert\NotNull
* @JMS\Groups({"Default", "something"})
*/
protected $members;
控制器:(我使用$ form-> submit)
public function updateAction($id, Request $request)
{
$project = $this->fetchProject($id);
$oldMembers = $project->getMembers();
$form = $this->createForm(...);
$form->submit($request->request->all(), false);
$newMembers = $project->getMembers();
...
$this->persist(...);
我在表单中添加了新成员并提交,但是'$ oldMembers'和'$ newMembers'是相同的!这是不可取的!
它们中的都引用新数据(getMembers())。但我需要将$ oldMembers与$ newMembers分开。怎么样?
答案 0 :(得分:1)
尝试像这样刷新实体管理器:
$em = $this->getDoctrine();
$em->refresh($project);
或者如果刷新不起作用,您可以手动添加成员
您正在使用表单,但是如果可以手动添加成员,则如下:
$project->addMember($member);
您可以使用以下方法进入您的实体:
public function addMember(Member $member)
{
$this->member[] = $member;
return $this;
}