ログ日記

作業ログと日記とメモ

PDOStatement::bindColumn()で複数行取得


O/Rマッパーで

$stmt->bindColumn('columnName', $vo->$propertyName)

とやってDBから一行取得するのは問題ないんだけど、複数行取得したいときに困った。
感覚的には

$vos = array();
while($stmt->fetch(PDO::FETCH_BOUND){
    $vos[] = clone $vo;
}
return $vos;

とやりたかったんだけど、これだと全て同じ値になってしまう。
オブジェクトのプロパティ自体が参照じゃなくても、どこかで参照で使われてたらダメってことか。


仕方がないので

    $vos[] = unserialize(serialize($vo));

として逃げた。
何かいい方法は無いものか・・。