首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ZF2中为使用Sql object‏创建的Sql语句的结果集设置数组对象原型

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

Stack Overflow用户
提问于 2013-04-12 23:02:22
回答 2查看 5.8K关注 0票数 2

我想在我的模型中使用Sql对象来查询数据库。我有一个entity对象,比如说Person和person对象都有exchangeArray()方法。我希望将此Person对象设置为我的sql查询的ResultSet的Array Object Prototype。

我研究了如何做到这一点,但我找到的唯一信息是如何将数组对象原型设置为分配给Zend\Db\TableGateway\TableGateway的ResultSet对象。

代码语言:javascript
复制
$personEntity = new PersonEntity();
$resultSet = new \Zend\Db\ResultSet\ResultSet();
$resultSet->setArrayObjectPrototype($personEntity);
$db = $sm->get('Zend\Db\Adapter\Adapter');
$table = new \Zend\Db\TableGateway\TableGateway('table', $db, null, $resultSet);

我的问题是,如何设置PersonEntity对象来表示从Zend\Db\Sql\Sql对象返回的数据库行?

提前谢谢你,

史蒂夫

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-13 19:00:19

我想下面的例子可以回答你的问题:

代码语言:javascript
复制
class Foo
{
    ...
    public function fetchAll() 
    {
        $sql = new Sql($dbAdapter); // Zend\Db\Sql\Sql
        $select = $sql->select('table_foo');
        $query = $sql->prepareStatementForSqlObject($select);
        $resutl = $query->execute();
        $resultSet = new ResultSet(); // Zend\Db\ResultSet\ResultSet
        $resultSet->setArrayObjectPrototype(new EntityObject()); // <-- HERE you set your entity object
        $resultSet->initialize($resutl);
        return $resultSet;
    }
    ...
}

这段代码将返回一个ResultSet对象,在本例中,返回的每一行都将由EntityObject表示。

Here是对手册的参考,该手册展示了如何将dataSource注入到结果对象中。

票数 4
EN

Stack Overflow用户

发布于 2013-04-27 17:32:57

您可以将数组对象原型设置为所需的任何结果集,如下所示:

代码语言:javascript
复制
$resultSet->setArrayObjectPrototype(new Entity);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15974738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档