只需要了解 ZF2 中一些简单的数据库查询。在 ZF1 中,我有这样的简单方法:
public function recordset()
{
// listing of all records
$db = Zend_Registry::get('db');
$sql = "SELECT " . $this->_selectlist() .
" from customer c";
$r = $db->fetchAll($sql);
return $r;
}
在 ZF2 中,我将如何做同样的事情?我尝试了以下方法,但这只是返回看起来像“结果”对象的东西,但我想要的只是一个像 ZF1 对 fetchAll 所做的数组。如果我必须迭代结果对象只是为了稍后提供数组,然后必须再次迭代,这似乎是一些重复的工作。
无论如何,这是我目前在 ZF2 中所拥有的:
//above the controller start I have: use Zend\Db\Adapter\Adapter as DbAdapter;
public function blaAction()
{
$db = new DbAdapter(
array(
'driver' => 'Pdo',
'dsn' => 'mysql:dbname=mydb;host=localhost',
'username' => 'root',
'password' => '',
)
);
$sql = 'select * from customer';
$stmt = $db->query($sql);
$results = $stmt->execute();
$this->view->data = $results;
return $this->view;
}
在输出中,我得到这个:
object(Zend\Db\Adapter\Driver\Pdo\Result)#197 (8) {
["statementMode":protected]=> string(7) "forward" ["resource":protected]=> object(PDOStatement)#195 (1) {
["queryString"]=> string(22) "select * from customer"
} ["options":protected]=> NULL ["currentComplete":protected]=> bool(false) ["currentData":protected]=> NULL ["position":protected]=> int(-1) ["generatedValue":protected]=> string(1) "0" ["rowCount":protected]=> NULL
}
但是,如果我将 $results 更改为,$results->count();
我确实会看到记录数。我如何以数组的形式获取数据?(完整的记录集)
有一次我确实看到了类似的东西: $results->current()
但这只返回了一条记录。
只是一个旁注。我确实看到了我可以使用的所有表格抽象类,但是在我学习的这一点上,我不想这样做。我只想要一些简单的按需查询,它们可以像在 ZF1 中那样返回数组。在 ZF2 中,似乎有太多“连接”配置中的东西和看起来有点矫枉过正的东西。但是,作为一个框架,我喜欢灵活性,我在 ZF1 中开发的主要应用程序可以真正受益于 ZF2 的模块化。(否则我可能会使用其他框架)
请原谅我的无知,非常感谢您的帮助!