Как я могу добавить связанную сущность к пользовательскому объекту в момент создания в FOSUserBundle?

В Symfony2 RC3 я пытаюсь создать связанную сущность в объекте пользователя (FOSUserBundle) в момент создания пользователя, чтобы отображать соответствующие поля в форме редактирования профиля. Я делаю следующее в RegistrationFormHandler.

class RegistrationFormHandler { защищенный запрос $; защищенный $userManager; защищенная форма $;

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;
}

}

Запись программы создается в базе данных, но с нулевым user_id, поэтому кажется, что ассоциация работает неправильно. Кто-нибудь знает, что может быть причиной этого?


person codecowboy    schedule 30.06.2011    source источник


Ответы (1)


Решение состояло в том, чтобы сделать $programs->setUser($this); в методе addProgrammes моего объекта User

person codecowboy    schedule 06.07.2011