在 Zend Framework 应用程序中,它的构建与 ZF2 Getting Started tutorial 中的相册应用程序非常相似,我使用 ResultSet 对象将数据从模型通过 Controller 传输到 View (有关详细信息,请参见下面的代码)。
这工作正常,但我不明白 ResultSet
对象保存数据的位置。我可以循环它,例如使用 foreach
并逐行获取数据(或更好的逐个模型对象)。但是当我在我的 IDE 中或简单地使用 var_dump(...)
调试它时,它似乎是空的。
Zend\Db\ResultSet\ResultSet
对象如何/在哪里保存从数据库检索的数据?
代码的相关部分:
模块设置:
class Module implements ConfigProviderInterface, ServiceProviderInterface, AutoloaderProviderInterface {
...
public function getServiceConfig() {
try {
return array (
'factories' =>array(
...
'SportTable' => function ($serviceManager) {
$tableGateway = $serviceManager->get('SportTableGateway');
$table = new SportTable($tableGateway);
return $table;
},
'SportTableGateway' => function ($serviceManager) {
$dbAdapter = $serviceManager->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Sport());
return new TableGateway('sports', $dbAdapter, null, $resultSetPrototype);
},
...
)
);
}
...
}
模型(表):
class CourseTable {
...
public function findAllByCityNameAndSportTitle($cityName, $sportTitle) {
$select = new Select();
$where = new Where();
...
$resultSet = $this->tableGateway->selectWith($select);
return $resultSet;
}
...
}
模型(映射器):
class Course implements ArraySerializableInterface {
public $id;
...
public function exchangeArray(array $data) {
$this->id = (isset($data['id'])) ? $data['id'] : null;
...
}
...
}
Controller :
class CatalogController extends AbstractActionController {
...
public function listCoursesAction() {
$cityName = $this->params()->fromRoute('city', null);
$sportTitle = $this->params()->fromRoute('sport', null);
return new ViewModel(array(
'city' => $cityName,
'sport' => $sportTitle,
'courses' => $this->getCourseTable()->findAllByCityNameAndSportTitle($cityName, $sportTitle)
));
}
...
}
查看:
<?php foreach ($courses as $course) : ?>
<div>
<div>id: <?php echo $this->escapeHtml($course->id); ?></div>
...
</div>
<?php endforeach; ?>
最佳答案
Zend\Db\ResultSet\ResultSet
或者更确切地说 Zend\Db\ResultSet\AbstractResultSet
是你问题的答案。这个对象有 10-12 个方法,其中大部分提供迭代功能。要回答您的问题,Zend\Db\ResultSet\ResultSet
会在其 dataSource
参数 (Zend\Db\ResultSet\ResultSet::$dataSource) 中保存从 Db 检索到的信息.
结果被 foreach
迭代和加载但 var_dump()
看不到的悖论可以解释为返回的结果实际上保存在缓冲中。
如果你想访问结果集,我建议你使用 Zend\Db\ResultSet\ResultSet::toArray()
($resultSet->toArray()
).这将返回一个数组数组,其中每个数组都是数据库表中的一行。
希望这对您有所帮助,我们将不胜感激 :),
斯托扬。
关于php - Zend\Db\ResultSet\ResultSet 对象在哪里存储检索到的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15745929/