Omega Searchを使用すると、Laravel搭載のWebサイトまたはWebアプリケーションにインテリジェント検索エンジンを簡単に追加できます。雄弁なモデルのいずれかを検索するように構成できます。
ボンネットの下で、これはオメガ検索パッケージを使用します。
このパッケージを作曲家と一緒にインストールできます。
composer require divineomega/laravel-omega-search
Laravel Omega検索を使用するには、最初に検索したいモデルにOmegaSearchTraitを追加します。次に、次の2つの抽象的なメソッドを実装する必要があります。
getOmegaSearchFieldsToSearch() - モデルのフィールドの配列を返す必要があります。getOmegaSearchConditions() - 検索条件の連想配列を返す必要があります。例: ['active' => 1, 'discontinued' => 0]このセットアップの後、モデルのStatic omegaSearch($searchText)メソッドを呼び出すことにより、検索を実行できます。この方法は、インテリジェントなファジー検索を実行し、関連する順序で関連するレコードにフィルタリングされたクエリビルダーを返します。
関連するモデルは、必要に応じて( ->get() )またはpaginated( ->paginate() )を取得できます。
関連するテーブルのコンテンツを検索する場合は、[結合]を使用できます。モデルのgetOmegaSearchTablesToJoinをオーバーライドし、 OmegaSearchJoinsの配列を返すだけです。
結合を定義するには2つの方法があります。最初の方法はOmegaSearchJoin::joinTableByForeignKeyメソッドを呼び出すことです。ローカルテーブル名を渡し、この方法にテーブル名を結合する必要があります。
デフォルトでは、結合されたテーブルのキーは、 _idが追加された_IDでシングル化された結合されたテーブル名と、ローカルテーブルのキーがidになります。これらは、この方法の3番目と4番目のパラメーターを使用して手動で設定できます。
例については、以下を参照してください。
public function getOmegaSearchTablesToJoin ()
{
return [
OmegaSearchJoin :: joinTableByForeignKey ( $ this -> getTable (), ' divisions ' ),
];
}または
public function getOmegaSearchTablesToJoin()
{
return [
OmegaSearchJoin ::joinTableByForeignKey( $ this -> getTable (), ' divisions ' , ' id ' , ' division_id),
];
}
以下に示すように、チェーン結合ができます:
public function getOmegaSearchTablesToJoin ()
{
return [
OmegaSearchJoin :: joinTableByForeignKey ( $ this -> getTable (), ' divisions ' ),
OmegaSearchJoin :: joinTableByForeignKey ( ' divisions ' , ' companies ' , ' id ' , ' company_id ' )
];
}関連するキーだけではないテーブルに参加したい場合は、条件を手動で結合することができます。これを行うには、新しいOmegaSearchJoinオブジェクトを作成し、 addCondition方法を呼び出して条件を追加します。コンストラクターにローカルテーブル名と結合されたテーブル名を指定する必要があります。オプションで、参加タイプを指定できます。デフォルトはJOINます
条件を追加すると、左側のパラメーターが自動的にローカルテーブル名を準備し、結合されたテーブル名が適切な条件に加えられます。
例については、以下を参照してください。
public function getOmegaSearchTablesToJoin ()
{
$ join = new OmegaSearchJoin ( ' contacts ' , ' divisions ' , ' INNER JOIN ' );
$ join -> addCondition ( ' gross_income ' , ' > ' , ' annual_income ' );
return [
$ join ,
];
}