如何使用mongo odm获得单个结果?

时间:2014-04-18 13:50:53

标签: php mongodb zend-framework2 odm

我做了一个设置动作,其中我使用了doctrine查询来获取单个结果,但是当数据存在于数据库中时它返回null,我是如何得到单个结果的?这是我的代码:

public function settingsAction()
    {
            $id = (int) $this->params()->fromRoute('id', 0);
            if (!$id) {
                return $this->redirect()->toRoute('calendar', array(
                    'action' => 'create'
                ));
            }   
                 //echo $id;
            //$calendar = $id;//$this->getCalendarTable()->getCalendar($id);
            $calendar = $documentManager->getRepository('Calendar\Document\Calendar')->find($id);
            $form  = new CalendarForm();
            $form->bind($calendar);
            $form->get('submit')->setAttribute('value', 'Save');

            $request = $this->getRequest();
            if ($request->isPost()) {
                $form->setInputFilter($calendar->getInputFilter());
                $form->setData($request->getPost());

                if ($form->isValid()) {
                    //$this->getCalendarTable()->saveCalendar($form->getData());
                    return $this->redirect()->toRoute('calendar', array('action' => 'show', 'id' => $id));
                }
            }

            return array(
                'id' => $id,
                'form' => $form,
            );
    }

1 个答案:

答案 0 :(得分:0)

您不需要创建一个按ID抓取的查询,因为DocumentRepository已经通过它find($id)方法提供此功能。

只需使用文档管理器来获取存储库

$document = $documentManager->getRepository('FooDocument')->find($id);

您也可以直接在文档管理器上使用便捷方法find($documentName, $id)

$document = $documentManager->find('FooDocument', $id);