Omega Search를 사용하면 Laravel Powered 웹 사이트 또는 웹 응용 프로그램에 지능형 검색 엔진을 쉽게 추가 할 수 있습니다. 웅변적인 모델을 검색하도록 구성 할 수 있습니다.
후드 아래에서 이것은 오메가 검색 패키지를 사용합니다.
Composer 로이 패키지를 설치할 수 있습니다.
composer require divineomega/laravel-omega-search
Laravel Omega 검색을 사용하려면 먼저 검색하려는 모델에 OmegaSearchTrait 추가하십시오. 그런 다음 다음 두 가지 추상 방법을 구현해야합니다.
getOmegaSearchFieldsToSearch() - 모델 필드의 배열을 검색하기 위해 반환해야합니다.getOmegaSearchConditions() - 검색 조건의 연관 배열을 반환해야합니다. 예 : ['active' => 1, 'discontinued' => 0] 이 설정 후 모델에서 정적 omegaSearch($searchText) 메소드를 호출하여 검색을 수행 할 수 있습니다. 이 방법은 지능적인 퍼지 검색을 수행하고 필터링 된 쿼리 빌더를 내림차순으로 관련된 레코드로 반환합니다.
그런 다음 관련 모델을 필요에 따라 ( ->get() ) 또는 Paginated ( ->paginate() )를 검색 할 수 있습니다.
관련 테이블의 내용을 검색하려면 조인을 사용할 수 있습니다. 모델에서 getOmegaSearchTablesToJoin 무시하고 OmegaSearchJoins 배열을 반환합니다.
결합을 정의하는 두 가지 방법이 있습니다. 첫 번째 방법은 OmegaSearchJoin::joinTableByForeignKey 메소드를 호출하는 것입니다. 이 방법에 로컬 테이블 이름과 테이블 이름을 결합해야합니다.
기본적으로 결합 된 테이블의 키는 _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 ,
];
}