简体   繁体   English

通过TableGateway对象进行的zend Framework 2更新查询

[英]zend Framework 2 update query by TableGateway Object

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();
}

my Output print : 158123 it's give me pass array in set() function that i already pass as argument. 我的输出打印:158123它给了我已经作为参数传递的set()函数中的传递数组。 also i have tried to convert object to array ((arrya)$objetc) but it's not work for me. 我也尝试将对象转换为数组((arrya)$ objetc),但对我来说不起作用。

[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

试试吧,我遇到了同样的问题,我尝试了一下,并且奏效了。

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

You may do that by implementing a Zend\\Db\\Sql\\Update object. 您可以通过实现Zend\\Db\\Sql\\Update对象来实现。 You may create that object using the TableGateway . 您可以使用TableGateway创建该对象。 You should be able to do the following in your model 您应该能够在模型中执行以下操作

public function update($set, $where)
{
    // Here is the catch  
    $update = $this->tableGateway->getSql()->update();
    $update->set($set);
    $update->where($where);

    // Execute the query
    return $this->tableGateway->updateWith($update);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM