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

मेरा आउटपुट प्रिंट: 158123 यह मुझे सेट () फ़ंक्शन में पास सरणी देता है जिसे मैं पहले से ही तर्क के रूप में पास करता हूं। मैंने ऑब्जेक्ट को सरणी में बदलने की कोशिश की है ((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
1
Maulik Patel 10 जुलाई 2017, 14:33

2 जवाब

सबसे बढ़िया उत्तर

आप ऐसा Zend\Db\Sql\Update ऑब्जेक्ट लागू करके कर सकते हैं। आप उस वस्तु को TableGateway का उपयोग करके बना सकते हैं। आपको अपने मॉडल में निम्नलिखित करने में सक्षम होना चाहिए

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);
}
2
unclexo 10 जुलाई 2017, 19:17

इसे आज़माएं, मैं उन्हीं मुद्दों के साथ था, मैंने इसके साथ प्रयास किया, और यह काम कर गया।

$rowset = $projectTable->update(array('statement_no' => '01010'), $where);
2
Gautam Rai 10 जुलाई 2017, 14:45