find_data
(CDBT 2.0.0)
find_data指定されたキーワードを含むデータを検索します
Description
mixed find_data ( string $table_name, mixed $search_key [, string $operator"AND", mixed $columns"*", array $orderarray( "created" => "DESC" ), int $limit, int $offset, string $output_type"OBJECT" ] )テーブルから指定されたキーワードを含むデータを検索します。このメソッドは部分一致条件でのデータ検索を行い、結果を配列で返します。最終的なテーブルデータの取得処理はWordPressの
$wpdb->get_results()のラッパーになります。Parameters
- table_name
- データを検索するテーブル名。
- search_key
- 検索対象のキーワード。キーワードを複数指定する場合は空白文字でキーワード文字列を区切るか、配列で指定します。空白文字を含むキーワードを指定する場合は配列での指定が有効です。指定されたキーワードは
operatorで指定した演算子で結合されます(バージョン2.0.7より)。
バージョン2.0.6までは複数キーワード指定時はAND演算子で結合されます。 - operator
- 検索キーワードが複数ある場合の結合条件。初期値はANDで、ANDもしくはORを指定できます。バージョン2.0.7で追加されました。
- columns
- 取得するカラム名。複数カラムのデータを取得する場合はカラム名をカンマ区切りの文字列として指定するか、もしくはカラム名の配列で指定します。省略時の初期値は”*“となり、すべてのカラムが対象になります。
カラム名の指定順がそのまま取得データの配列の要素順になります。 - order
- 取得データのソート順序。カラム名をキーとする連想配列で指定します。値には昇順(ASC)か降順(DESC)のどちらかを指定します。複数指定した場合は、配列要素の順序がソートの優先順になります。
- limit
- 取得データ数の上限値。
- offset
- 取得データの開始オフセット値。
limitが指定されている場合のみ有効となります。 - output_type
- 取得データの戻り値の型。初期値は”OBJECT“で、PHPのオブジェクト型となります。指定できる型はWordPressの$wpdb->get_results()の定義値に準じます。
指定できる型:
- OBJECT ─ 数値添字配列の要素としてオブジェクトが格納されている型
Array (
[0] => stdClass Object (
[ID] => 4
[created] => 2016-02-11 09:58:07
[updated] => 2016-02-11 09:58:07
)
[1] => stdClass Object (
[ID] => 2
[created] => 2016-02-11 09:57:38
[updated] => 2016-02-11 09:57:38
)
)
- OBJECT_K ─ 最初のカラムの値をキーとした連想配列の要素にオブジェクトが格納されている型(キーが重複した場合は破棄される)
Array (
[4] => stdClass Object (
[ID] => 4
[created] => 2016-02-11 09:58:07
[updated] => 2016-02-11 09:58:07
)
[2] => stdClass Object (
[ID] => 2
[created] => 2016-02-11 09:57:38
[updated] => 2016-02-11 09:57:38
)
)
- ARRAY_A ─ 数値添字配列の要素がカラム名をキーとした連想配列型
Array (
[0] => Array (
[ID] => 4
[created] => 2016-02-11 09:58:07
[updated] => 2016-02-11 09:58:07
)
[1] => Array (
[ID] => 2
[created] => 2016-02-11 09:57:38
[updated] => 2016-02-11 09:57:38
)
)
- ARRAY_N ─ すべて数値添字形式の2次元配列型
Array (
[0] => Array (
[0] => 4
[1] => 2016-02-11 09:58:07
[2] => 2016-02-11 09:58:07
)
[1] => Array (
[0] => 2
[1] => 2016-02-11 09:57:38
[2] => 2016-02-11 09:57:38
)
)
Return
取得データはoutput_typeに応じた型の配列で返されます。条件に合致するデータがない場合は空の配列が返ります。なお、指定したテーブルが存在しない場合にはFALSEが返ります。
History
| バージョン | 内容 |
|---|---|
| 2.0.0 | CDBT v1の同名メソッドをリファクタリング |
| 2.0.7 | パラメータにoperatorを追加。UNIONによるデータ検索の不具合を修正 |
| 2.1.33 | UNIONによるデータ検索を廃止。CONCATによるデータ結合検索を実装 |
| 2.1.34 | CONCATによるデータ結合検索のフィルターを拡張 |
Example
例1 検索キーワードのどちらかにマッチするデータを取得する。
<?php
global $cdbt;
$table_name = "prefix_table";
$data = $cdbt->find_data( $table_name, 'Yamada Suzuki', 'or' );
print_r( $data );
例2 取得カラム、ソート順を指定してキーワード検索して連想配列形式でデータを取得する。
<?php
global $cdbt;
$table_name = "prefix_table";
$data = $cdbt->find_data( $table_name, 'Tanaka', null, 'age,gender,name', [ 'ID'=>'DESC' ], 'ARRAY_A' );
print_r( $data );
Caution
このメソッドの検索対象となるカラムの型は、数値型と文字列型、ENUM型、SET型、一部のバイナリ型となります。ただし、プライマリーキーが設定されているカラムは除外されます。それら検索対象カラムに対して指定キーワードが存在するかを横断的に実行します。カラム名を限定しての検索には対応していませんので注意してください。
Included Hooks
- cdbt_crud_find_data_sqlfind_data メソッドで発行されたSQLクエリをフィルターします
- cdbt_find_concat_columnsデータの検索時にデータ結合処理を実行するか否かをフィルターします
- cdbt_find_concat_separatorデータ結合検索時の区切り文字の定義をフィルターします
- cdbt_find_concat_valueデータ結合検索時の検索キーワードをフィルターします
Reference
Related Methods
- get_data()指定のテーブルから任意のデータを取得します
Related Codex