gpt4 book ai didi

php - 在注册上创建一个新的 OneToOne 关系

转载 作者:搜寻专家 更新时间:2023-10-31 21:26:08 25 4
gpt4 key购买 nike

我是 Symfony 和 FOSUserBundle 的新手,我在 User 和 Stream 之间有一对一的关系,当用户想要注册时,他会检查他是否是流媒体。如果他是主播,我想创建一个与用户相关的新流,所以这里是我覆盖的来自 FOSUserBundle 的 registerAction :

$form = $this->container->get('fos_user.registration.form');
$formHandler = $this->container->get('fos_user.registration.form.handler');
$confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled');
$process = $formHandler->process($confirmationEnabled);
if ($process) {
$user = $form->getData();

/*This is what I added*/
if($user->getIsStreamer()){
$em = $this->getDoctrine()->getManager();
$stream = new Stream();
$stream->setUser($user);
$em->persist($stream);
$em->flush();
}
/********/
$authUser = false;
if ($confirmationEnabled) {
$this->container->get('session')->set('fos_user_send_confirmation_email/email', $user->getEmail());
$route = 'fos_user_registration_check_email';
} else {
$authUser = true;
$route = 'fos_user_registration_confirmed';
}

$this->setFlash('fos_user_success', 'registration.flash.user_created');
$url = $this->container->get('router')->generate($route);
$response = new RedirectResponse($url);

if ($authUser) {
$this->authenticateUser($user, $response);
}

return $response;
}

但是什么也没发生,我错过了什么?

最佳答案

您缺少将流添加到用户的部分(而不仅仅是设置流的用户)。

首先,确保您的关联包含 cascade={"persist"} 以避免手动持久化 Stream 的需要:

/**
* @ORM\OneToOne(targetEntity="Stream", cascade={"persist"},
*/
protected $stream;

然后,更改您的 setStream 使其自动调用 $stream->setUser :

public function setStream(Stream $stream = null)
{
$this->stream = $stream;
$stream->setUser($this); // Setter calling

return $this;
}

现在您可以像这样替换您的条件逻辑:

if($user->getIsStreamer()){
$stream = new Stream();
$user->setStream($stream);
}

在方法结束时调用 $em->flush 时,应该正确存储关联。

在 FOSUB 注册的情况下,它应该是:
$this->get('fos_user.user_manager')->updateUser($user);.
它是在 confirmAction 中完成的,您的用户在此处成功重定向。

关于php - 在注册上创建一个新的 OneToOne 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35818479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com