Symfony / Doctrine:从processForm获取最后一个插入ID?

时间:2011-03-19 04:42:51

标签: php symfony1 doctrine

如何在流程表单请求之后获取最后一个插入ID,例如:

$this->form = new StudyPlanForm();

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

我会使用save(),但我不知道如何保存而无需为每个字段执行$ studyplan-> setField($ request-> getParameter(...))。

2 个答案:

答案 0 :(得分:3)

尝试:

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

更新

只有当表单是sfFormObject的实例时,才可以从表单中获取对象。

答案 1 :(得分:3)

更改您的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 方法返回db上持久保存的对象,因此您可以从中获取id。所以你可以这样做:

$this->form = new StudyPlanForm();

$obj = $this->processForm($request, $this->form);
if ($obj != null){
    //do whatever you want like $obj->getId()
}