Dengan 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);//获取当前页数,默认为第一页 $limit = input('limit', 10);//获取每页显示条数,默认为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']]; } //计算总记录数 $count = Db::table('users') ->where($where) ->count(); //执行分页查询 $list = Db::table('users') ->where($where) ->page($page) ->limit($limit) ->select(); //返回查询结果 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:
//执行分页查询 $list = Db::table('users') ->where($where) ->cache(true, 600)//开启缓存,缓存时间为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!