Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Carian Perkaitan Tertib Merentasi Berbilang Lajur dalam Laravel?
Mencari Berbilang Kata Kunci Berbanding Berbilang Lajur dengan Perkaitan Tertib dalam Laravel
Melaksanakan fungsi carian yang melibatkan berbilang kata kunci terhadap berbilang lajur pangkalan data boleh menjadi mencabar, terutamanya apabila keputusan perlu dipesan berdasarkan perkaitan. Dalam Laravel, terdapat beberapa pendekatan untuk menangani perkara ini.
Pendekatan menggunakan Pertanyaan Pangkalan Data
Salah satu cara untuk menangani isu ini ialah dengan membina berbilang pertanyaan pangkalan data untuk mendapatkan semula hasil berdasarkan kriteria tertentu. Berikut ialah pelaksanaan yang mungkin:
$word1 = 'word1'; $word2 = 'word2'; $word3 = 'word3'; $all = DB::table('posts') ->where('meta_name', 'like', "%{$word1}%") ->where('meta_name', 'like', "%{$word2}%") ->where('meta_name', 'like', "%{$word3}%") ->orWhere(function($query) use ($word1, $word2, $word3) { $query->where('meta_description', 'like', "%{$word1}%") ->where('meta_description', 'like', "%{$word2}%") ->where('meta_description', 'like', "%{$word3}%"); }); $twoWords = DB::table('posts') ->where('meta_name', 'like', "%{$word1}%") ->where('meta_name', 'like', "%{$word2}%") ->orWhere(function($query) use ($word1, $word2) { $query->where('meta_description', 'like', "%{$word1}%") ->where('meta_description', 'like', "%{$word2}%"); }) ->whereNotIn('id', $all->pluck('id')); $oneWord = DB::table('posts') ->where('meta_name', 'like', "%{$word1}%") ->orWhere('meta_description', 'like', "%{$word1}%") ->whereNotIn('id', $all->pluck('id')) ->whereNotIn('id', $twoWords->pluck('id')); $posts = $all->union($twoWords)->union($oneWord)->get();
Pendekatan ini menapis hasil berdasarkan kehadiran ketiga-tiga kata kunci, hanya dua kata kunci pertama dan kemudian hanya kata kunci pertama. Akhir sekali, ia menggabungkan hasil menggunakan pengendali kesatuan.
Pertimbangan Tambahan untuk Penomboran
Untuk melaksanakan fungsi muat-pada-tatal, anda boleh menggabungkan permintaan JavaScript dan AJAX. Apabila pengguna menatal ke bahagian bawah halaman, permintaan AJAX boleh dihantar untuk mendapatkan set keputusan seterusnya. Kaedah langkau() dan ambil() dalam Query Builder boleh digunakan untuk menentukan offset dan had rekod untuk diambil.
// Retrieve the specified number of results after the last loaded result $start = $request->get('start');//how many results have already been shown $records = Post::select('*') ->skip($start) ->take($this->rowperpage) // $this->rowperpage= 4 e.g. ->get();
Ingat untuk mengendalikan kes di mana tiada lagi hasil yang tersedia untuk ditatal.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Carian Perkaitan Tertib Merentasi Berbilang Lajur dalam Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!