参考文献许多有Symfony的Doctorine

时间:2018-08-09 15:19:24

标签: php symfony doctrine

我将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分开。怎么样?

1 个答案:

答案 0 :(得分:1)

尝试像这样刷新实体管理器:

    $em = $this->getDoctrine();
    $em->refresh($project);

或者如果刷新不起作用,您可以手动添加成员

您正在使用表单,但是如果可以手动添加成员,则如下:

$project->addMember($member);

您可以使用以下方法进入您的实体:

public function addMember(Member $member)
{
    $this->member[] = $member;

    return $this;
}