zf2 插入使用 $db->insert($table, $data);风格

Posted

技术标签:

【中文标题】zf2 插入使用 $db->insert($table, $data);风格【英文标题】:zf2 insert using $db->insert($table, $data); style 【发布时间】:2013-02-22 00:31:25 【问题描述】:

您好,有什么方法可以在 zf2 上使用 zf1 样式在 db 表中插入数据?

$db->insert('tablename', $data);

$data 是一个关联数组,其中包含 (columns, values)

谢谢

【问题讨论】:

您遇到了什么问题? 【参考方案1】:

在 zf2 中插入:

    use Zend\Db\Sql\Sql;

    $sql = new Sql($this->dbAdapter);
    $insert = $sql->insert('table');
    $newData = array(
    'col1'=> 'val1',
    'col2'=> 'val2',
    'col3'=> 'val3'
    );
    $insert->values($newData);
    $selectString = $sql->getSqlStringForSqlObject($insert);
    $results = $this->dbAdapter->query($selectString, Adapter::QUERY_MODE_EXECUTE);

【讨论】:

getSqlStringForSqlObject() 在 2.4 中已弃用 buildSqlString() 在这种情况下应该处理同样的事情。 如何获取插入ID?【参考方案2】:

我使用 TableGateway 的建议:

    $adapter = $this->tableGateway->getAdapter();
    $otherTable = new Zend\Db\TableGateway\TableGateway('table_name', $adapter);
    $otherTable->insert($data));

【讨论】:

致命错误:找不到接口'Zend\EventManager\EventsCapableInterface' ..这似乎需要另一个模块? 我只有这种方式,但我很惊讶它做了两个条目,为什么会这样? $otherTable = new Zend\Db\TableGateway\TableGateway('demo', \Config\Config::getAdapter()); $otherTable->insert(['name' => 500]);

以上是关于zf2 插入使用 $db->insert($table, $data);风格的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter:如何将 $this->db->insert_id() 值传递给控制器​​以便插入另一个表?

如何修复'$this->db->insert_batch($this->tbl, $data) 没有显示任何错误也没有插入数据库'?

mongoDB 插入数据

如何在 zf2 中获取最后插入的 id?

ZF2 - \Zend\Db\Adapter\Platform::getQuoteIdentifierSymbol()

Liquibase DB 独立插入语句