2013-05-02 30 views
0

我們正在開發使用ZF2的網站。我們開始了這個項目。我們安裝了ZF2 skelton應用程序並集成了相冊模塊。一切似乎工作。現在我們試圖將多個zend表單集成到一個模塊中。我們通過修改albulm模塊元素來形成eveyrything我可以插入/更新/刪除等數據到module.php文件[this for form 1]上設置的默認表中。 我有另一種形式,需要插入/刪除/更新到另一個表,我創建新的表單類,Table類(模型)等。當我試圖插入數據到Db使用自定義查詢格式,它會引發錯誤:zf2使用自定義查詢的數據庫插入不起作用

File: 
/home/catholic/public_html/propertydosth/vendor/zendframework/zendframework/library/Zend/Db/Sql/Insert.php:298 
Message: 
The key adapter was not found in this objects column list. 

看來適配器值沒有得到的東西..

我的插入查詢代碼:

$adapter = $this->tableGateway->getAdapter(); 
    $sql   = new Sql($adapter); 
    $insert  = $sql->insert('dad_cms'); 
    $newData  = array(
     'category_id' => $admin->category_id, 
     'cms_title' => $admin->cms_title, 
     'cmd_desc' => $admin->cmd_desc, 
     'seo_keywords' => $admin->seo_keywords, 
     'seo_titles' => $admin->seo_titles 
    ); 
    $insert->values($newData); 
    $selectString = $sql->getSqlStringForSqlObject($insert); 
    $results = $insert->adapter->query($selectString, Adapter::QUERY_MODE_EXECUTE); 

我得到正確的查詢值時,我贊同$ selectString。 任何人都應該建議我的代碼中有什麼錯誤來完成它。

+1

請格式化您的問題,以便有人能夠真正閱讀此;)請參閱[格式幫助網站](http://stackoverflow.com/編輯幫助) – Sam 2013-05-02 09:00:53

+0

是的。我只是格式化。很長一段時間我都在爲此嘗試。薩姆你的博客也幫助我們完成了很多配置zend基本設置的工作。希望你能幫助解決這場危機? – Dijo 2013-05-02 09:06:25

+1

我不太瞭解'Zend \ Db',但是錯誤信息表明你的最後一行是錯誤的'$ insert-> adapter - > ...'你試圖訪問像這樣的列。請參見[文檔的第三個示例](http://zf2.readthedocs.org/en/latest/modules/zend.db.sql.html#zend-db-sql-sql-quickstart)。它應該是'$ adapter-> query(..)'我假設 – Sam 2013-05-02 09:20:08

回答

0

終於山姆在這個問題上幫了我: 所以正確答案變成[這將有助於有人有類似的問題。即使我花了很多時間調試相同的]:

$adapter = $this->tableGateway->getAdapter(); 
$sql   = new Sql($adapter); 
$insert  = $sql->insert('dad_cms'); 
$newData  = array(
    'category_id' => $admin->category_id, 
    'cms_title' => $admin->cms_title, 
    'cmd_desc' => $admin->cmd_desc, 
    'seo_keywords' => $admin->seo_keywords, 
    'seo_titles' => $admin->seo_titles 
); 
$insert->values($newData); 
$selectString = $sql->getSqlStringForSqlObject($insert); 
$results = $adapter->query($selectString, Adapter::QUERY_MODE_EXECUTE);