Pencarian Omega memungkinkan Anda untuk dengan mudah menambahkan mesin pencari yang cerdas ke situs web atau aplikasi web Laravel Anda. Ini dapat dikonfigurasi untuk mencari salah satu model fasih Anda.
Di bawah kap, ini menggunakan paket pencarian Omega.
Anda dapat menginstal paket ini dengan komposer.
composer require divineomega/laravel-omega-search
Untuk menggunakan Laravel Omega Search, pertama -tama tambahkan OmegaSearchTrait ke model yang ingin Anda cari. Anda kemudian harus menerapkan dua metode abstrak berikut.
getOmegaSearchFieldsToSearch() - Harus mengembalikan array bidang model untuk mencari.getOmegaSearchConditions() - Harus mengembalikan array asosiatif dari kondisi pencarian. Contoh: ['active' => 1, 'discontinued' => 0] Setelah pengaturan ini, pencarian dapat dilakukan dengan memanggil metode omegaSearch($searchText) pada model. Metode ini melakukan pencarian fuzzy yang cerdas, dan mengembalikan pembangun kueri yang disaring ke catatan terkait dalam urutan relevansi yang menurun.
Model terkait kemudian dapat diambil ( ->get() ) atau paginated ( ->paginate() ) sesuai kebutuhan.
Jika Anda ingin mencari konten tabel terkait, Anda dapat menggunakan gabungan. Cukup ganti getOmegaSearchTablesToJoin pada model Anda dan kembalikan array OmegaSearchJoins .
Ada dua cara untuk mendefinisikan gabungan. Cara pertama adalah memanggil metode OmegaSearchJoin::joinTableByForeignKey . Anda harus meneruskan nama tabel lokal dan bergabung dengan nama tabel dengan metode ini.
Secara default, kunci pada tabel yang bergabung akan menjadi nama tabel yang bergabung dengan singularised dengan _id ditambahkan dan kunci pada tabel lokal akan id . Ini dapat diatur secara manual menggunakan parameter ke -3 dan ke -4 untuk metode ini.
Lihat di bawah untuk contoh:
public function getOmegaSearchTablesToJoin ()
{
return [
OmegaSearchJoin :: joinTableByForeignKey ( $ this -> getTable (), ' divisions ' ),
];
}atau
public function getOmegaSearchTablesToJoin()
{
return [
OmegaSearchJoin ::joinTableByForeignKey( $ this -> getTable (), ' divisions ' , ' id ' , ' division_id),
];
}
Anda dapat bergabung dengan rantai seperti yang terlihat di bawah ini:
public function getOmegaSearchTablesToJoin ()
{
return [
OmegaSearchJoin :: joinTableByForeignKey ( $ this -> getTable (), ' divisions ' ),
OmegaSearchJoin :: joinTableByForeignKey ( ' divisions ' , ' companies ' , ' id ' , ' company_id ' )
];
} Jika Anda ingin bergabung dengan tabel yang tidak hanya ditautkan oleh kunci terkait, Anda dapat secara manual menambahkan kondisi ke gabungan. Untuk melakukan ini, buat objek OmegaSearchJoin baru dan hubungi metode addCondition untuk menambahkan kondisi Anda. Anda harus menentukan nama tabel lokal dan nama tabel yang bergabung di konstruktor. Secara opsional Anda dapat menentukan jenis gabungan, defaultnya adalah JOIN
Saat menambahkan kondisi, parameter di sebelah kiri akan secara otomatis memiliki nama tabel lokal yang disiapkan dan nama tabel yang bergabung akan diisi ke kondisi yang tepat.
Lihat di bawah untuk contoh:
public function getOmegaSearchTablesToJoin ()
{
$ join = new OmegaSearchJoin ( ' contacts ' , ' divisions ' , ' INNER JOIN ' );
$ join -> addCondition ( ' gross_income ' , ' > ' , ' annual_income ' );
return [
$ join ,
];
}