如何为ZF2中使用Sql对象创建的Sql语句的结果集设置数组对象原型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为ZF2中使用Sql对象创建的Sql语句的结果集设置数组对象原型相关的知识,希望对你有一定的参考价值。

我想在我的模型中使用Sql对象来查询数据库。我有一个实体对象让我说人和人对象有exchangeArray()方法。我想将此Person对象设置为我的SQL查询的ResultSet的Array Object Prototype

我研究如何做到这一点但我发现的唯一信息是如何将Array Object Prototype设置为分配给ResultSetZendDbTableGatewayTableGateway对象。

$personEntity = new PersonEntity();
$resultSet = new endDbResultSetResultSet();
$resultSet->setArrayObjectPrototype($personEntity);
$db = $sm->get('ZendDbAdapterAdapter');
$table = new endDbTableGatewayTableGateway('table', $db, null, $resultSet);

我的问题是如何设置PersonEntity对象来表示从ZendDbSqlSql对象返回的数据库行?

提前致谢,

史蒂夫

答案

我想以下示例将回答您的问题:

class Foo
{
    ...
    public function fetchAll() 
    {
        $sql = new Sql($dbAdapter); // ZendDbSqlSql
        $select = $sql->select('table_foo');
        $query = $sql->prepareStatementForSqlObject($select);
        $resutl = $query->execute();
        $resultSet = new ResultSet(); // ZendDbResultSetResultSet
        $resultSet->setArrayObjectPrototype(new EntityObject()); // <-- HERE you set your entity object
        $resultSet->initialize($resutl);
        return $resultSet;
    }
    ...
}

此代码将返回一个ResultSet对象,其中每个行返回将由EntityObject代表。

Here是对手册的参考,该手册显示了将dataSource注入结果对象。

另一答案

您可以将数组对象原型设置为您想要的任何结果集:

$resultSet->setArrayObjectPrototype(new Entity);

以上是关于如何为ZF2中使用Sql对象创建的Sql语句的结果集设置数组对象原型的主要内容,如果未能解决你的问题,请参考以下文章

使用 JDBC 时如何为 SQL 语句启用日志记录

如何为每次执行将过程结果存储在 SQL Server 中的新(单个)文本文件中

在sql创建数据库表时,如何为字段设一个默认值

如何为 PL SQL 中的现有表创建唯一 ID?

请问下在java jdbc中:sql语句中含有or 时,该如何为这个占位符(?)赋值····求解 如下图:

我如何为这个问题编写 SQL 语句?