在Zend Framework应用程序中,它与ZF2 Getting Started tutorial的相册应用程序非常相似,我使用ResultSet对象将模型中的数据通过控制器传输到视图(有关详细信息,请参阅代码下文)。
这样可以正常工作,但我不知道,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;
...
}
...
}
控制器:
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; ?>
答案 0 :(得分:0)
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()
)。这将返回一个数组数组,其中每个数组都是数据库表中的一行。
希望这会有所帮助,反馈将不胜感激:),
斯托。