Symfony 5如何在具有ManyToMany关系的更新中自动发送当前用户

问题描述 投票:0回答:1

我希望我的当前用户注册费率。

```
/**
 * @ORM\Column(type="string", length=255)
 */
private $name;

/**
 * @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="matters")
 * @ORM\JoinColumn(nullable=false)
 */
private $user;

/**
 * @ORM\OneToMany(targetEntity="App\Entity\Note", mappedBy="matter")
 */
private $notes;

/**
 * @ORM\ManyToMany(targetEntity="App\Entity\User", inversedBy="studentsMatters")
 */
private $student;
```

当他按下“更新”时,ManyToMany关系必须发送当前用户。在我的控制器中,我正在尝试发送当前用户

/**
     * @Route("/{id}/edit", name="student_edit", methods={"GET","POST"})
     */
    public function edit(Request $request, Matter $matter): Response
    {
        $form = $this->createForm(StudentType::class, $matter);
        $form->handleRequest($request);
        $user = $this->getUser();
        $matter->setStudent($this->getUser());

        if ($form->isSubmitted() && $form->isValid()) {       
            $this->getDoctrine()->getManager()->flush();

            return $this->redirectToRoute('student_index');
        }

        return $this->render('student/edit.html.twig', [
            'matter' => $matter,
            'form' => $form->createView(),
        ]);
    }

但是它不起作用。

如何获得当前用户?

php mysql symfony doctrine symfony5
1个回答
0
投票

首先,您必须更新数据(已完成)。当表单提交并有效时,您必须在刷新更新之前使用实体管理器或服务管理器保存更新。

使用实体管理器,您只需要在刷新数据之前添加以下行:

    $this->getDoctrine()->getManager()->persist($matter);
© www.soinside.com 2019 - 2024. All rights reserved.