Omega搜索使您可以輕鬆地將智能搜索引擎添加到Laravel Power的網站或Web應用程序中。可以將其配置為搜索您的任何雄辯模型。
在引擎蓋下,這使用了歐米茄搜索包。
您可以使用作曲家安裝此軟件包。
composer require divineomega/laravel-omega-search
要使用Laravel Omega搜索,請首先將OmegaSearchTrait添加到您希望搜索的模型中。然後,您必須實現以下兩個抽象方法。
getOmegaSearchFieldsToSearch() - 必須返回模型字段的數組進行搜索。getOmegaSearchConditions() - 必須返回搜索條件的關聯數組。示例: ['active' => 1, 'discontinued' => 0]設置後,可以通過在模型上調用靜態omegaSearch($searchText)方法來執行搜索。此方法執行了智能模糊搜索,並將查詢構建器返回,該查詢構建器按照相關性的降序返回相關記錄。
然後可以根據需要檢索相關模型( ->get() )或分頁( ->paginate() )。
如果要搜索相關表的內容,則可以使用加入。只需覆蓋模型上的getOmegaSearchTablesToJoin ,然後返回OmegaSearchJoins的數組即可。
有兩種定義連接的方法。第一種方法是調用OmegaSearchJoin::joinTableByForeignKey方法。您必須將本地表名稱傳遞並將表名稱連接到此方法。
默認情況下,加入表上的密鑰將是加入的表名稱singunarized,添加_id ,本地表上的鍵將id 。可以使用此方法的第三和第四參數手動設置這些。
請參閱下面的示例:
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 ' )
];
}如果您想加入不僅由相關密鑰鏈接的表,您可以手動將條件添加到JON。為此,創建一個新的OmegaSearchJoin對象,並調用addCondition方法以添加您的條件。您必須在構造函數中指定本地表名稱和連接的表名稱。您可以選擇指定加入類型,默認值是JOIN
添加條件時,左側的參數將自動使用本地表名稱,並將加入的表名稱添加到正確的條件。
請參閱下面的示例:
public function getOmegaSearchTablesToJoin ()
{
$ join = new OmegaSearchJoin ( ' contacts ' , ' divisions ' , ' INNER JOIN ' );
$ join -> addCondition ( ' gross_income ' , ' > ' , ' annual_income ' );
return [
$ join ,
];
}