大量のデータを処理するとき、メモリをちょっとだけ気にしてデータベスからIDリストを取ってくる→それぞれのIDでデータを再度取得し、計算するといったことをよくやります。

fuelphpでもこれをやろう!と思ったのですが、ormを使っているとなかなかうまくいきませんでした。

一応出した自分的結論がこれ

[php]
$ids = Model_Sample::query()->select(‘id’)
->get_query()
->execute()
->as_array(null,’t0_c0′);
[/php]

これをやると、
[plain]
array (
0 => ’1′,
1 => ’3′,
2 => ’2′,
)
[/plain]
こういう形でデータが帰ってきます。

t0_c0はfuelphpが勝手につけるカラムの名前です。
一番最初のカラムにはこの名前が付けられるようなので、書きました。

本当は
[php]
$ids = DB::select()->select(‘id’)
->from(‘samples’)
->execute()
->as_array(null,’id’)
[/php]

のほうが正しいでしょうが、せっかくormがあるのにfromを直接書くのは負けた気がするので上のを使ってます。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>