


Cara melaksanakan penyerahan pertanyaan gabungan pelbagai keadaan hadapan dalam ThinkPHP5
Apr 11, 2023 am 10:31 AMDengan perkembangan pesat Internet, semakin banyak laman web dan aplikasi mula menggunakan seni bina pemisahan bahagian hadapan dan belakang. Untuk bahagian belakang, rangka kerja yang baik boleh membantu kami melaksanakan logik perniagaan dengan lebih baik dan meningkatkan kecekapan pembangunan dan kualiti kod. Untuk bahagian hadapan, paparan dan carian data selalunya juga merupakan pautan yang penting. Dalam artikel ini, kami akan memperkenalkan cara menggunakan ThinkPHP5 untuk melaksanakan fungsi penyerahan pertanyaan gabungan pelbagai keadaan hadapan.
1. Analisis keperluan
Dalam pembangunan sebenar, kita selalunya perlu menanyakan beberapa jadual atau data. Data ini selalunya sangat besar, dan kami perlu melakukan penapisan berbilang keadaan untuk mencari data yang kami perlukan dengan cepat. Oleh itu, kita perlu membangunkan fungsi pertanyaan gabungan berbilang syarat.
Secara khusus, kami perlu melaksanakan fungsi berikut:
1 Menyokong pertanyaan gabungan dengan berbilang syarat: Pengguna boleh memilih berbilang syarat untuk pertanyaan gabungan.
2. Sokong pertanyaan paging: Jika terdapat banyak hasil pertanyaan, kami mungkin perlu memaparkannya dalam paging.
3. Menyokong caching pertanyaan: Jika keadaan pertanyaan yang sama dilaksanakan beberapa kali dalam tempoh masa yang singkat, kami boleh menggunakan caching pertanyaan untuk meningkatkan kelajuan pertanyaan.
2. Pemilihan Teknologi
Untuk merealisasikan fungsi di atas, kita perlu memilih rangka kerja yang berkuasa. Dalam kandungan berikut, kami akan menggunakan rangka kerja ThinkPHP5 untuk melaksanakan fungsi ini.
3. Langkah pelaksanaan
1. Buat jadual dan data
Pertama, kita perlu mencipta jadual dan memasukkan beberapa data ujian. Dalam contoh ini, kami akan mencipta jadual yang dipanggil "pengguna" dengan medan seperti nama, umur, jantina, bandar dan status.
2. Cipta borang pertanyaan
Seterusnya, kita perlu mencipta borang HTML untuk menerima syarat pertanyaan yang dimasukkan oleh pengguna. Dalam contoh ini, kami akan menyokong berbilang syarat pertanyaan seperti nama, umur, jantina, bandar dan negeri. Kita boleh mencapai ini melalui kawalan pilih atau input dalam borang.
Seperti yang anda lihat, kami menggunakan pilih, input dan kawalan lain dalam borang untuk menerima input pengguna dan menggunakan butang hantar untuk menghantar permintaan. Antaranya, kita harus ambil perhatian bahawa untuk syarat pertanyaan berbilang pilihan, kita perlu menambah "[]" pada atribut nama elemen borang untuk menunjukkan bahawa ini ialah tatasusunan.
3. Laksanakan logik pertanyaan
Selepas pengguna menyerahkan permintaan pertanyaan, kami perlu menghantar syarat pertanyaan yang dimasukkan oleh pengguna ke latar belakang untuk pertanyaan data. Di sini, kami akan menggunakan pembina pertanyaan yang disediakan oleh rangka kerja ThinkPHP5 untuk mencapai matlamat ini. Secara khusus, kita perlu mendapatkan syarat pertanyaan yang dimasukkan oleh pengguna secara berasingan, kemudian gabungkan syarat ini ke dalam pernyataan SQL dan laksanakan pertanyaan. Hasil pertanyaan boleh dilalui dan dipaparkan dalam paging.
Seluruh logik pertanyaan adalah seperti berikut:
public?function?search(){ ????$param?=?input('post.');//獲取查詢條件 ????$page?=?input('page',?1);//獲取當(dāng)前頁數(shù),默認(rèn)為第一頁 ????$limit?=?input('limit',?10);//獲取每頁顯示條數(shù),默認(rèn)為10 ????//開始拼湊查詢條件 ????$where?=?[]; ????if(!empty($param['name'])){ ????????$where[]?=?['name',?'like',?'%'.?$param['name']?.?'%']; ????} ????if(!empty($param['gender'])){ ????????$where[]?=?['gender',?'=',?$param['gender']]; ????} ????if(!empty($param['age'])){ ????????$ageArr?=?explode('-',?$param['age']); ????????if(count($ageArr)?==?2){ ????????????$where[]?=?['age',?'between',?[$ageArr[0],?$ageArr[1]]]; ????????} ????} ????if(!empty($param['city'])){ ????????$where[]?=?['city',?'=',?$param['city']]; ????} ????if(!empty($param['status'])){ ????????$where[]?=?['status',?'=',?$param['status']]; ????} ????//計(jì)算總記錄數(shù) ????$count?=?Db::table('users') ????????->where($where) ????????->count(); ????//執(zhí)行分頁查詢 ????$list?=?Db::table('users') ????????->where($where) ????????->page($page) ????????->limit($limit) ????????->select(); ????//返回查詢結(jié)果 ????return?json([ ????????'code'?=>?0, ????????'msg'?=>?'', ????????'count'?=>?$count, ????????'data'?=>?$list ????]); }
Dalam kod ini, kami mula-mula mendapatkan syarat pertanyaan yang dimasukkan oleh pengguna, dan menggunakan kaedah where untuk menggabungkan syarat ini ke dalam SQL kenyataan. Seterusnya, kami menggunakan kaedah kiraan untuk mengira bilangan rekod yang memenuhi syarat dan menggunakan kaedah halaman dan had untuk melaksanakan pertanyaan halaman. Akhir sekali, kami mengembalikan hasil pertanyaan ke bahagian hadapan dalam JSON.
4. Laksanakan caching pertanyaan
Jika kami menanyakan keadaan yang sama beberapa kali dalam tempoh masa yang singkat, beban pada pangkalan data akan menjadi sangat besar. Oleh itu, kami boleh meningkatkan kecekapan pertanyaan dengan menghidupkan caching pertanyaan. Untuk mendayakan caching pertanyaan, kami hanya perlu menambah kaedah cache selepas pernyataan pertanyaan. Khususnya, kita boleh mengubah suai kod di atas kepada bentuk berikut:
//執(zhí)行分頁查詢 $list?=?Db::table('users') ????->where($where) ????->cache(true,?600)//開啟緩存,緩存時(shí)間為600秒 ????->page($page) ????->limit($limit) ????->select();
Selepas melengkapkan langkah di atas, kita boleh melaksanakan fungsi penyerahan pertanyaan gabungan pelbagai syarat hadapan. Dalam penggunaan sebenar, jika jumlah data pertanyaan adalah sangat besar, kami juga boleh mempertimbangkan untuk menggunakan kaedah pengoptimuman lain, seperti pemuatan tak segerak, pertanyaan teragih, dsb.
Ringkasan
Artikel ini memperkenalkan kaedah menggunakan rangka kerja ThinkPHP5 untuk melaksanakan penyerahan pertanyaan gabungan berbilang keadaan hadapan. Dengan cara ini, kami boleh dengan cepat dan mudah melaksanakan fungsi pertanyaan yang kompleks dan meningkatkan kecekapan pembangunan dan kualiti kod. Pada masa yang sama, kami juga memperkenalkan cara untuk membolehkan caching pertanyaan untuk mengurangkan beban pada pangkalan data dan meningkatkan lagi kecekapan pertanyaan.
Atas ialah kandungan terperinci Cara melaksanakan penyerahan pertanyaan gabungan pelbagai keadaan hadapan dalam ThinkPHP5. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)