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

Php Symfony 5如何在具有多个关系的更新中自动发送当前用户,php,mysql,symfony,doctrine,symfony5,Php,Mysql,Symfony,Doctrine,Symfony5,我希望我的当前用户注册一个费率 ``` /** * @ORM\Column(type="string", length=255) */ private $name; /** * @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="matters") * @ORM\JoinColumn(nullable=false) */ private $user; /**

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

```
/**
 * @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;
```
当他按下“更新”时,多人关系必须发送给当前用户。 在我的控制器中,我正在尝试发送当前用户

/**
 * @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(),
    ]);
}
但它不起作用


如何获取当前用户?

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

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

$this->getDoctrine()->getManager()->persist($matter);
我不确定是否理解最后一个问题“如何获取当前用户?”
当前用户已由以下人员检索:
$this->getUser()

它不起作用。事实上,对于currentUser,我希望当用户发送更新时,它会自动发送当前用户,例如DateTime,您必须以某种方式将当前用户设置到实体中的某个位置。您可以编写一个服务类,在当前用户已设置的情况下提供实体的新实例。然后在控制器中,从$matter=$matterService->getNewInstance()开始;你已经做了所有必要的事情。您确定此路由受防火墙保护吗?你也可以检查“可指责”原则的扩展——它自动地做这些事情。