Symfony / Doctrine:从processForm获取最后一个插入ID?(Symfony/Doctrine: Getting last insert id from processForm?)
如何在处理表单请求之后获取最后一个插入ID,例如:
$this->form = new StudyPlanForm(); $this->processForm($request, $this->form);我会使用save(),但我无法找到一种方法来保存,而不必为每个字段执行$ studyplan-> setField($ request-> getParameter(...))。
How do I get the last insert ID after a process form request such as this one:
$this->form = new StudyPlanForm(); $this->processForm($request, $this->form);I would use save() but I can't figure out a way to save without having to do $studyplan->setField($request->getParameter(...)) for every single field.
最满意答案
像这样改变你的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() }Change your processForm function like this:
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; }The save method returns the object persisted on db, so you can get the id from that. So you can do:
$this->form = new StudyPlanForm(); $obj = $this->processForm($request, $this->form); if ($obj != null){ //do whatever you want like $obj->getId() }更多推荐
发布评论