如何在FOSUserBundle中创建时将相关实体添加到用户对象?

时间:2011-06-30 17:27:13

标签: doctrine-orm symfony

在Symfony2 RC3中,我尝试在用户创建时在User对象(FOSUserBundle)上创建一个相关实体,以便我可以在编辑配置文件表单上显示相应的字段。我在RegistrationFormHandler中执行以下操作。

类RegistrationFormHandler {     受保护的$ request;     protected $ userManager;     protected $ form;

public function __construct(Form $form, Request $request, UserManagerInterface $userManager)
{
    $this->form = $form;
    $this->request = $request;
    $this->userManager = $userManager;
}

public function process($confirmation = null)
{
    $user = $this->userManager->createUser();
    $this->form->setData($user);

    if ('POST' == $this->request->getMethod()) {
        $this->form->bindRequest($this->request);

        if ($this->form->isValid()) {
            if (true === $confirmation) {
                $user->setEnabled(false);
            } else if (false === $confirmation) {
                $user->setConfirmationToken(null);
                $user->setEnabled(true);
            }
            $prog = new \MyBundle\CoreBundle\Entity\Programme();

            $prog->setStartDate(date_create());
            $prog->setEndDate(date_create());
            $prog->setWeeklyTarget(4);
            $prog->setGoal('');

            $user->addProgrammes($prog);
            $this->userManager->updateUser($user);

            return true;
        }
    }

    return false;
}

}

程序记录确实在数据库中创建,但是使用null user_id,因此关联似乎无法正常工作。有谁知道这可能导致什么?

1 个答案:

答案 0 :(得分:1)

解决方案是做$ programmes-> setUser($ this);在我的用户实体的addProgrammes方法