Symfony / Doctrine: получить последний идентификатор вставки из processForm? - PullRequest
1 голос
/ 19 марта 2011

Как получить последний идентификатор вставки после запроса формы процесса, такого как этот:

$this->form = new StudyPlanForm();

$this->processForm($request, $this->form);

Я бы использовал save (), но я не могу найти способ сохранения без необходимости делать $ studyplan-> setField ($ request-> getParameter (...)) для каждого поля.

Ответы [ 2 ]

3 голосов
/ 19 марта 2011

Измените свою функцию processForm следующим образом:

protected function processForm(sfWebRequest $request, sfForm $form)
{
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
      $obj = $form->save();
    }

    return $obj;
}

Метод save возвращает объект, сохраненный на БД, так что вы можете получить из него идентификатор. Так что вы можете сделать:

$this->form = new StudyPlanForm();

$obj = $this->processForm($request, $this->form);
if ($obj != null){
    //do whatever you want like $obj->getId()
}
3 голосов
/ 19 марта 2011

Попробуйте:

.. form processing ..
$id = $this->form->getObject()->id;

Обновление:

Можно получить объект из вашей формы, только если это экземпляр sfFormObject.

...