alpersist:検索
検索
- データを選択的に読み込むために、検索用のメソッドを用意しています。
- 検索条件等を指定して、複数のレコードを読み込みます。
- ベースになるデータストレージの機能によっては、フルスペックで使えない場合があります。
簡単な使い方
def action_search() param = { :where=>{ :age=>20 } } results = @person.search( param ) results.each {|data| puts data.values, "<br>" } end
- パラメータとして、検索条件を指定する例です。
- この例では、年齢が20才の人のみ抽出します。
- 検索条件は、AND結合のみです。
検索条件
複合条件。HashキーをSymbolで指定した場合は、常に=(イコール)で比較します。
:where=>{ :name=>"Ishikawa", :age=>20 }
NULL条件の指定。( SQLでは、name is nullとなる)
:where=>{ :name=>nil }
以上、以下などの指定
:where=>{ "age <"=>20 }
Like検索
:where=>{ "name like"=>"I%" }
並べ替え順
パラメータに、:order_byキーを追加します。
def action_search() param = { :order_by=>"age desc" } results = @person.search( param ) results.each {|data| puts data.values, "<br>" } end
複数のオーダー指定は、配列で指定します。
:order_by=>["age desc", "name asc"]
その他の条件
リミット、オフセット
param = { :limit=>2, :offset=>5 }
リミットを指定した場合は、検索後、以下のメソッドが有効になります。
# 前ページのオフセット値を得る。前ページがなければnil。 @person.get_previous_offset() # 次ページのオフセット値を得る。次ページがなければnil。 @person.get_next_offset()]
全件数の同時取得
def action_search() param = { :total_rows=>true } @person.search( param ) p @person.search_condition[:total_rows] end
SQLを直接発行して検索する
- SQLを直接指定して、検索することができます。
- この場合は、オブジェクト生成時に指定したテーブル名及びプライマリキーは使われず、任意のSQLが発行できます。
- RDBをベースに持つPersistクラスしかサポートしません。
- select( "取得するタプル", "FROM句以下", param = {} ) の形式です。
- paramは、上記searchと同様です。
コード例
@persist.select( "t1.*, t2.note" "from t1 inner join t2 using(id) where d=CURRENT_DATE", :order_by=>"create_date desc", :limit=>10, :offset=>20 )
生成されるSQL
select t1.*, t2.note from t1 inner join t2 using(id) where d=CURRENT_DATE order by create_date desc limit 10 offset 20;
alpersist/検索.txt · 最終更新: 2019/02/12 00:06 by hirohito