cdbt_find_concat_columns

(CDBT 2.1.33)

cdbt_find_concat_columnsデータの検索時にデータ結合処理を実行するか否かをフィルターします

Description

bool cdbt_find_concat_columns ( bool $is_concat [, string $table_name ] )
データの検索時にデータ結合処理を実行するか否かをフィルターします。このフィルターでデータ結合検索を有効にすると、別々のカラムに格納されているデータを連結して検索対象に含めることができます。
Notice:例えば、「FirstName」と「LastName」のカラムのデータを結合して、フルネームでの検索を行いたい場合などに使用します。このフィルターはバージョン2.1.33以降のプラグインで利用できます。

Parameters

is_concat
検索時のデータ結合処理を行う場合は TRUE を指定します。初期値は FALSE です。
table_name
フィルターするテーブル名を参照できます。

History

バージョン 内容
2.1.33 新規追加

Example

例1 データ結合検索を有効化します。

<?php
add_filter( 'cdbt_find_concat_columns', function( $is_concat, $table_name ){ return $table_name == 'prefix_table_name' ? true : $is_concat; }, 10, 2 );
Notice:バージョン2.1.33ではデータ結合検索を有効化しても、初期のデータの区切り文字が NULL 文字のため、検索キーワードをマッチさせるために下記のように「cdbt_crud_find_data_sql」フィルターも併せて利用する必要があります。バージョン2.1.34以降では、区切り文字を定義するフィルター「cdbt_find_concat_separator」と検索キーワードをSQLクエリ用に最適化するフィルター「cdbt_find_concat_value」が利用できます。

例2 半角空白によるデータ区切りキーワードをフィルターします(バージョン2.1.33まで)。

add_filter( 'cdbt_find_concat_columns', function( $is_concat, $table_name ){ return $table_name == 'prefix_table_name' ? true : $is_concat; }, 10, 2 );
function my_custom_search_query( $sql, $table_name, $queries ) {
  if ( $table_name == 'prefix_table_name' ) {
    $_new_where_clause = str_replace( 'CHAR(0)', "' '", $queries[1] );
    $sql = str_replace( $queries[1], $_new_where_clause, $sql );
  }
  return $sql;
}
add_filter( 'cdbt_crud_find_data_sql', 'my_custom_search_query', 10, 3 );

Hook Point

  • find_data()指定されたキーワードを含むデータを検索します

Reference

Related Hooks