新しいプロジェクトの PDO ラッパーを作成しています。SQL の非常に一般的なパターンは、次のようなステートメントを作成することです。
while ($row = $connection->fetch($sql)) {
...
}
私のラッパー関数は本質的にこれです:
public function fetch($query, $bindings)
{
$stmt = $this->getPdo()->prepare($query);
$stmt->execute($bindings);
$stmt->setFetchMode($this->getFetchMode());
foreach ($stmt as $record) {
yield $record;
}
}
while
しかし、上記のようにループを使用してこれを呼び出すと、値を使用できません。a を実行するvar_dump
と、それ$row
は Generator オブジェクトです。を使用するforeach
と、var_dump
予想どおり、データベースのデータが表示されます。を使用してジェネレーターをトラバースすることは単に不可能while
ですか、それともここでどこかで自分自身を混乱させましたか?