Pages

2021年7月5日月曜日

FriendsOfCake / search の使い方メモ

FriendsOfCake/search

https://github.com/FriendsOfCake/search

インストール

composerをインストールした環境で

$ php composer.phar require friendsofcake/search

プラグインを追加したらソースから利用できるように

$ bin/cake plugin load Search

利用方法

https://github.com/FriendsOfCake/search/tree/master/docs

Tableの initialize() でビヘイベアを追加


同じく Table の initialize() に検索条件のテンプレートのようなもので コレクション を記載する。


解りにくいけど useCollection() から次の useCollection() までが1つのコレクションとなるみたい。

add() で追加できる1検索条件は色々なタイプが用意されている。

add() の第2パラメーターで、指定する他、メソッドからも検索タイプを指定可能。
この方が phpstorm とかなら候補で出てくるので解りやすい。

フィルター

  1. value()
    完全一致で検索をする。
  2. like()
    LIKE検索をする。
  3. boolean()
    結果を true または false で検索をする。
    ※true にはデフォルトで 1、true、 '1'、 'true'、 'yes'、 'on' を含む。
  4. exists()
    対象カラムがNOT NULLかを検索する。
  5. finder()
    finder****() という関数を使用して検索する。
    https://book.cakephp.org/3/ja/orm/retrieving-data-and-resultsets.html#custom-find-methods
  6. compare()
    比較演算子(>, <= など)を使って検索する。
  7. callback()
    コールバック関数を使って検索する。



対応オプジョン

共通で利用できるオプジョン

  1.  fields (array)
    検索に使用するフィールドの名前を指定する。
  2. name (string、デフォルトでは、add filterメソッドの最初の引数に渡された名前になります)
    フィルターの名前をフィールドとは別にしたい場合に利用する。
  3. alwaysRun (bool、デフォルトはfalse)
    存在するかどうかに関係なく、フィルタを常に実行するかどうかを定義する。
  4. filterEmpty (bool、デフォルトはfalse)
    空の場合に、フィルターを実行しないかどうかを定義する。
  5. flatten (bool、デフォルトはtrue)
    入力フォームから配列として渡される値をフラット化するかどうかを定義する。
  6. beforeProcess (callable、デフォルトはnull)
    $queryと$argsを引数として受け取ります。たとえば、クエリに結合または包含を設定するためにコールバックを使用。
  7. aliasField (bool、デフォルトはtrue)
    フィールド名にエイリアスを設定する場合に利用する。
  8. defaultValue (mixed、デフォルトはnull)
    デフォルト値を指定する。

Boolean

  1. mode (string、デフォルトはOR)
    複数のフィールドと照合するときに使用する条件付きモード。
    有効な値は、ORとAND。

 Exists

  1. mode (string、デフォルトはOR)
    複数のフィールドと照合するときに使用する条件付きモード。
    有効な値は、ORとAND。
  2. nullValue (stringまたはnull、デフォルトはnull)
    null許容でない列に使用できます。
    =/の!=代わりにIS NULL/を介してチェックするには、空の文字列に設定しIS NOT NULLます。

Compare

  1. operator (string、デフォルトは>=)
    比較に使用する演算子。有効な値は>=、<=、>と<。
  2. mode (string、デフォルトはAND)
    複数のフィールドと照合するときに使用する条件付きモード。
    有効な値は、ORとAND。

Like

  1.  multiValue (bool、デフォルトはfalse)
    フィルターが複数の値を受け入れるかどうかを定義します。
    無効になっていて、複数の値が渡されている場合、フィルターは defaultValue オプションで定義されたデフォルト値の使用にフォールバックします。
  2. multiValueSeparator (string、デフォルトはnull)
     特定の区切り文字列を使用して、フィルターが複数の値を自動トークン化するかどうかを定義します。無効にした場合、データは配列の形式である必要があります。
  3. colType (array)
    連想配列。実際の型に関係なく、文字列列として扱う必要がある列のカスタム型を設定するために使用します。これは、整数フィールドが検索対象のフィールドの一部である場合など、整数フィールドにとって重要です。使用例: 'colType' => ['id' => 'string']
  4. before (bool、デフォルトはfalse)
    検索語の前にワイルドカードを自動的に追加するかどうか 。
  5. after (bool、デフォルトはfalse)
    検索語の後にワイルドカードを自動的に追加するかどうか 。
  6. fieldMode (string、デフォルトはOR)
    複数のフィールドと照合するときに使用する条件付きモード。有効な値は、ORとAND。
  7. valueMode (string、デフォルトはOR)
    複数の値を検索するときに使用する条件付きモード。有効な値は、ORとAND。
  8. comparison (string、デフォルトはLIKE)
    使用する比較演算子。
  9. wildcardAny (string、デフォルトは*)
    として扱われるべき文字列を定義する任意のそれは検索用語に遭遇している場合にワイルドカードを。この動作により、これは内部的に適切なSQL互換のワイルドカードに置き換えられます。これは、検索語内で実際のワイルドカード文字を使用して用語の一部として扱われるようにしながら、検索語内でワイルドカードを渡したい場合に役立ちます。たとえば、の検索語* has reached 100%はに変換され% has reached 100\%ます。さらに、オプションを参照してくださいescapeDriver。
  10. wildcardOne (string、デフォルトは?)
    検索語で検出された場合に1つのワイルドカードとして扱われる文字列を定義します。と同様に動作しwildcardAnyます_。つまり、検索語が使用された場合、実際のSQL互換ワイルドカード()はエスケープされます。
  11. escaper (stringへのデフォルトnull)
    エスケープする必要がありエスケー定義%とは_。エスケープ機能が設定されていない場合(escapeDriver => 'null')、エスケープ機能はデータベースドライバによって設定されます。ドライバがある場合 に使用される(エスケープするとします)。他のすべての場合に (エスケープに使用されるにし、に)。と設定にエスケープを追加することで、独自のエスケープを追加できます。SqlserverSqlserverEscaper%[%]_[_]DefaultEscaper%\%_\_App\Model\Filter\Escaper\OwnEscaper'escaper' => 'App.Own'

Value

  1. multiValue (bool、デフォルトはfalse)
    フィルターが複数の値を受け入れるかどうかを定義します。無効になっていて、複数の値が渡されている場合、フィルターはdefaultValueオプションで定義されたデフォルト値の使用にフォールバックします。
  2. multiValueSeparator (string、デフォルトはnull)
    特定の区切り文字列を使用して、フィルターが複数の値を自動トークン化するかどうかを定義します。無効にした場合、データは配列の形式である必要があります。
  3. mode (string、デフォルトはOR)
    複数のフィールドと照合するときに使用する条件付きモード。有効な値は、ORとAND。
  4. negationChar (string、デフォルトはnull)
    multiValue特に値が多い場合は、の代替。フィルタは任意の文字列を受け入れますが、理想的には、検索値のプレフィックスとして単一の一意の文字である必要があります。たとえば!、文字列値または-数値の場合。有効にすると、フィルターはこの値の式を無効にします。

Finder

  1. finder (string、デフォルトはフィルター名)
     使用する検索タイプ。
  2. map (array、デフォルトは[])
     フィールドをファインダーキー('to_field' => 'from_field')にマップする必要がある場合は、配列を構成します。
  3. options (array、デフォルトは[])
    ファインダーに渡す追加オプション。
 

Followers