การค้นหา Omega ช่วยให้คุณสามารถเพิ่มเครื่องมือค้นหาอัจฉริยะในเว็บไซต์หรือเว็บแอปพลิเคชันที่ใช้พลังงานจาก Laravel ได้อย่างง่ายดาย สามารถกำหนดค่าให้ค้นหารุ่นใดก็ได้ของคุณ
ภายใต้ประทุนสิ่งนี้ใช้แพ็คเกจการค้นหาโอเมก้า
คุณสามารถติดตั้งแพ็คเกจนี้ด้วยนักแต่งเพลง
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 ,
];
}