« デイ・アフター・トゥモロー | トップページ | 10キロランでちょうどええ »

2012.01.27

[PHP/Doctorin] fetchAllとexecute

DoctrineでSELECT文を実行するのに、無意識にexecuteしてしまっていて、2回目のforeachが回ってくれないという現象にやられました。

 


$sql="SELECT foo,bar FROM hogeHoge ...";
$con = Doctrine_Manager::connection();
$this->record_list = $con->execute($sql);
//↑ここ
foreach($this->record_list as $record) {
//一回目のループはOK
}
foreach($this->record_list as $record) {
//二回目はループしない
}

 

一回のループで済ませるか、fetchAllに変えればOKですね。

 

実際には一回目のループはオートロードのクラス側で、二回目のループはsymfonyのテンプレート側に書いていました。

 

それに、「なんで配列がforeachで回らないのか?」という暗澹たる思いにとらわれていましたけど、あとでfetchAllexecuteの戻り値の型を調べてみますと、fetchAllの戻り値は配列ですが、executeの戻り値はPDOStatementというクラスオブジェクトでした。PHPってクラスオブジェクトもforeachにかけられるのですね。

 

いろんな条件が重なって気づくのが遅れたともいえるなー。

 

 

 

ドクトリンの日本語の本てほとんど無いですねー。
↓これくらいかw

 

 

« デイ・アフター・トゥモロー | トップページ | 10キロランでちょうどええ »

プログラミング」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: [PHP/Doctorin] fetchAllとexecute:

« デイ・アフター・トゥモロー | トップページ | 10キロランでちょうどええ »

2020年6月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
フォト

Google AdSense

銀の弾丸

無料ブログはココログ

他のアカウント