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 では、configs 内の「配線」が多すぎて、やり過ぎのように見えるものがあります。しかし、フレームワークとしては柔軟性が気に入っています。私が ZF1 で取り組んでいるメイン アプリは、ZF2 のモジュール性から本当に恩恵を受けることができます。(それ以外の場合は、おそらく他のフレームワークを使用します)
私の無知を許してください。助けてくれてありがとう!