gpt4 book ai didi

php - Zend\Db\ResultSet\ResultSet 对象在哪里存储检索到的数据?

转载 作者:搜寻专家 更新时间:2023-10-31 22:08:01 26 4
gpt4 key购买 nike

在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com