ZF2将数据插入Db

时间:2015-05-20 15:12:18

标签: zend-framework2

在保存期间,我发现了一个错误:

  

values()需要一个值数组或Zend \ Db \ Sql \ Select实例

我认为错误来自:

$this->tableGateway->insert($procedure);

我不明白出了什么问题。

这是我的过程功能:

public function processAction()
    {
         if (!$this->request->isPost()){
            return $this->redirect()->toRoute(null, array('controller'=>'test', 'action'=>'index'));
        }

        $post = $this->request->getPost();
        $form = new TestForm();
        $inputFilter = new \Postepowania\Form\TestFilter();
        $form->setInputFilter($inputFilter);
        $form->setData($post);

        if (!$form->isValid()){
            $model = new ViewModel(
                array(
                    'error' => true,
                    'form' =>$form,
                )
            );            
            $model->setTemplate('postepowania/test/index');
            return $model;
        }

        $this->createTest($form->getData());    
        //return $this->redirect()->toRoute(null,array('controller' => 'test','action' => 'confirm',));
    }

和createTest函数:

 public function createTest(array $data){

        $testTable = $this->getServiceLocator()->get('TestTable');
        $test = new Test();
        $test->exchangeArray($data);

        $testTable->save($test);

        return true;
    }

保存功能非常简单:

public function save(Test $procedure)
    {
        $id = (int)$procedure->id;
        if($id == 0)
        {
            $this->tableGateway->insert($procedure);
        }

    }

1 个答案:

答案 0 :(得分:1)

$this->tableGateway->insert()

通过查看sourceinsert()需要将数组传递给它,而不是对象。我建议在传入之前将对象转换为数组。