大量のデータを処理するとき、メモリをちょっとだけ気にしてデータベスからIDリストを取ってくる→それぞれのIDでデータを再度取得し、計算するといったことをよくやります。 fuelphpでもこれをやろう!と思ったのですが、ormを使っているとなかなかうまくいきませんでした。 一応出した自分的結論がこれ
$ids = Model_Sample::query()->select('id') ->get_query() ->execute() ->as_array(null,'t0_c0');
これをやると、
array ( 0 => '1', 1 => '3', 2 => '2', )
こういう形でデータが帰ってきます。 t0_c0はfuelphpが勝手につけるカラムの名前です。 一番最初のカラムにはこの名前が付けられるようなので、書きました。 本当は
$ids = DB::select()->select('id') ->from('samples') ->execute() ->as_array(null,'id')
のほうが正しいでしょうが、せっかくormがあるのにfromを直接書くのは負けた気がするので上のを使ってます。