在Zend Framework應用程序中,它與ZF2 Getting Started tutorial的專輯應用程序非常相似,我使用ResultSet對象通過控制器將數據從模型傳輸到視圖(有關詳細信息,請參閱下面的代碼)。Zend Db ResultSet ResultSet對象在哪裏存儲檢索到的數據?
這工作正常,但我沒有得到,其中ResultSet
對象持有的數據。我可以循環它,例如與foreach
並獲取數據row byrow(或模型對象更好的模型對象)。但是,當我在我的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; ?>
謝謝你的回答!但是'Zend \ Db \ ResultSet \ ResultSet#toArray()'不適用於我。我調用它('$ courses-> toArray();')並在[第一行]上設置一個斷點(https://github.com/zendframework/zf2/blob/master/library/Zend/Db/ResultSet/Zend \ Db \ ResultSet \ AbstractResultSet#toArray()'的/AbstractResultSet.php#L256)。然後我重新加載頁面,並獲得代碼 - 「$ dataSource」屬性爲空。引發了一個異常:'作爲這個DataSource的一部分,行類型的對象不能轉換爲數組'。 – automatix
沒有斷點,'$ courses-> toArray();'返回了什麼? –
它返回這個異常:'作爲這個DataSource的一部分,行類型的對象不能轉換爲數組' – automatix