我想在我的模型中使用Sql对象来查询数据库。我有一个实体对象让我说人和人对象有exchangeArray()
方法。我想将此Person对象设置为我的SQL查询的ResultSet的Array Object Prototype
。
我研究如何做到这一点但我发现的唯一信息是如何将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
对象返回的数据库行?
提前致谢,
史蒂夫
我想以下示例将回答您的问题:
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
注入结果对象。
您可以将数组对象原型设置为您想要的任何结果集:
$resultSet->setArrayObjectPrototype(new Entity);