Serverに対してoffsetとlimitを使用するためのメモ。Serverへの接続するときのdb.phpの書き方に書いているので参照願いたい。Builderでは、下記のようにすると30件目から10件分、などというデータ取得ができて便利だ。Serverだとこれができない。ServerにはOFFSETやLIMITという構文が存在しないからだ。ないのか理解に苦しむが、その代わりの構文は用意されている。2008以降のみ利用可能らしい)。なんでこんなに冗長なのかまた理解に苦しむが、そういう仕様なのだから仕方ない。ONLY部分がLIMITに相当する。この構文には難点がある。LIMITだけの指定ができないのだ。0とすればよさそうだ。いうわけでFuelPHPのデータベースアクセス部分をこの仕様に沿ったように変更してやる必要がある。Serverと併用しなければならない場合は、他の方法を検討する必要がある。select.phpの変更FuelPHPのQueryBuilderでSELECT文を生成しているのはfuel/core/database/query/builder/select.phpである。このselect.phpのcompileメソッドが実際にクエリ文をコンパイルしているメソッドだ。Coreのファイルを直接編集したくないので、appの下に同じ階層構造でselect.phpを作ってCoreの機能をオーバーライドする。fuel/app/classes/database/query/builder/select.phpを作り、Database_Query_Builder_Selectクラスのcompileクラスのみをオーバーライドすればよい。ほとんど元のcompileメソッドのコピーだが、最後のほうのoffsetとlimitに関する部分のみが異なっている。実装内容は下記の通り。