2013-05-02 54 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);