يتيح لك Omega Search إضافة محرك بحث ذكي بسهولة إلى موقع الويب الخاص بك أو تطبيق الويب الذي يعمل به Laravel. يمكن تكوينه للبحث في أي من النماذج البليغة الخاصة بك.
تحت الغطاء ، يستخدم هذا حزمة البحث أوميغا.
يمكنك تثبيت هذه الحزمة مع الملحن.
composer require divineomega/laravel-omega-search
لاستخدام بحث Laravel Omega ، أضف أولاً OmegaSearchTrait إلى النماذج التي ترغب في البحث عنها. يجب عليك بعد ذلك تنفيذ طريقتين تجريدين التاليين.
getOmegaSearchFieldsToSearch() - يجب إرجاع مجموعة من حقول النموذج للبحث.getOmegaSearchConditions() - يجب إعادة مجموعة نقاط من ظروف البحث. مثال: ['active' => 1, 'discontinued' => 0] بعد هذا الإعداد ، يمكن إجراء بحث عن طريق استدعاء طريقة omegaSearch($searchText) الثابتة على النموذج. تؤدي هذه الطريقة بحثًا غامضًا ذكيًا ، ويعيد منشئ الاستعلام الذي تمت تصفيته إلى السجلات ذات الصلة بترتيب تنازلي ذي صلة.
يمكن بعد ذلك استرداد النماذج ذات الصلة ( ->get() ) أو paginated ( ->paginate() ) كما هو مطلوب.
إذا كنت ترغب في البحث في محتوى الجداول ذات الصلة ، فيمكنك استخدام Joins. ما عليك سوى تجاوز getOmegaSearchTablesToJoin على النموذج الخاص بك وإرجاع مجموعة من OmegaSearchJoins .
هناك طريقتان لتحديد الوصلات. الطريقة الأولى هي استدعاء طريقة OmegaSearchJoin::joinTableByForeignKey . يجب عليك تمرير اسم الجدول المحلي وينضم إلى اسم الجدول إلى هذه الطريقة.
بشكل افتراضي ، سيكون المفتاح الموجود على الجدول المرتبط هو اسم الجدول المرتبط بتسجيله مع _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 ' )
];
} إذا كنت ترغب في الانضمام إلى الجداول التي لا ترتبط فقط بواسطة المفاتيح ذات الصلة ، يمكنك إضافة شروط يدويًا إلى انضمام. للقيام بذلك ، قم بإنشاء كائن OmegaSearchJoin جديد واتصل طريقة addCondition لإضافة شروطك. يجب عليك تحديد اسم الجدول المحلي واسم الجدول المرتبط في المنشئ. اختياريا يمكنك تحديد نوع الانضمام ، الافتراضي هو JOIN
عند إضافة شرط ، فإن المعلمة الموجودة على اليسار ستحصل تلقائيًا على اسم الجدول المحلي مسبقًا وسيتم إعداد اسم الجدول المرتبط بالشرط الأيمن.
انظر أدناه للحصول على مثال:
public function getOmegaSearchTablesToJoin ()
{
$ join = new OmegaSearchJoin ( ' contacts ' , ' divisions ' , ' INNER JOIN ' );
$ join -> addCondition ( ' gross_income ' , ' > ' , ' annual_income ' );
return [
$ join ,
];
}