2

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

我研究了如何做到这一点,但我发现的唯一信息是如何将 Array Object Prototype 设置为ResultSet分配给Zend\Db\TableGateway\TableGateway.

$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对象返回的数据库行?

提前致谢,

史蒂夫

4

2 回答 2

4

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

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

是对显示注入dataSource结果对象的手册的参考。

于 2013-04-13T11:00:19.190 回答
3

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

$resultSet->setArrayObjectPrototype(new Entity);
于 2013-04-27T09:32:57.463 回答