Php zend Framework 2按TableGateway对象更新查询

Php zend Framework 2按TableGateway对象更新查询,php,zend-framework,zend-framework2,zend-db,tablegateway,Php,Zend Framework,Zend Framework2,Zend Db,Tablegateway,我的输出打印:158123 它是在set()函数中给我传递数组,我已经把它作为参数传递了。此外,我还尝试将对象转换为数组((arrya)$objetc),但这对我来说不起作用 public function update($table, $where = array(), $data_arr = array()){ print_r($data_arr); $adapter = $this->tableGateway->getAdapter(); $pro

我的输出打印:158123 它是在set()函数中给我传递数组,我已经把它作为参数传递了。此外,我还尝试将对象转换为数组((arrya)$objetc),但这对我来说不起作用

public function update($table, $where = array(), $data_arr = array()){

    print_r($data_arr);

    $adapter = $this->tableGateway->getAdapter();

    $projectTable;

    if($table != null){
        $projectTable = new TableGateway($table, $adapter);
    }else{
        $projectTable = new TableGateway('account_master', $adapter);
    }
    echo "158";

    try {
        echo "123";
        $rowset = $projectTable->update(function(Update $update) use ($where, $data_arr) {

                $update->set(array('statement_no' => '01010'));

                $update->where($where);

            echo $update->getSqlString();
        });
    } catch (\Exception $e) {
            print_r($e);
    }

    print_r($rowset);
    die();
}
试试看, 我也遇到过同样的问题,我尝试过这个,它成功了

[10-Jul-2017 05:11:34 America/Denver] PHP Catchable fatal error:  Argument 1 passed to Zend\Db\Sql\Update::set() must be of the type array, object given, called in /home2/flywing1/vendor/zendframework/zend-db/src/TableGateway/AbstractTableGateway.php on line 336 and defined in /home2/flywing1/vendor/zendframework/zend-db/src/Sql/Update.php on line 93
试试看, 我也遇到过同样的问题,我尝试过这个,它成功了

[10-Jul-2017 05:11:34 America/Denver] PHP Catchable fatal error:  Argument 1 passed to Zend\Db\Sql\Update::set() must be of the type array, object given, called in /home2/flywing1/vendor/zendframework/zend-db/src/TableGateway/AbstractTableGateway.php on line 336 and defined in /home2/flywing1/vendor/zendframework/zend-db/src/Sql/Update.php on line 93

您可以通过实现
Zend\Db\Sql\Update
对象来实现这一点。您可以使用
TableGateway
创建该对象。您应该能够在模型中执行以下操作

$rowset = $projectTable->update(array('statement_no' => '01010'), $where);

您可以通过实现
Zend\Db\Sql\Update
对象来实现这一点。您可以使用
TableGateway
创建该对象。您应该能够在模型中执行以下操作

$rowset = $projectTable->update(array('statement_no' => '01010'), $where);