Apabila membangun menggunakan ThinkPHP5, anda sering menghadapi situasi di mana anda perlu menanyakan data unik dalam pangkalan data. Keadaan ini sangat biasa dalam kerja pembangunan sebenar, sebagai contoh, adalah perlu untuk mendapatkan semua jenama unik di bawah kategori produk tertentu, dsb. Jadi bagaimana untuk mengalih keluar pertanyaan pendua dalam ThinkPHP5?
1 Gunakan kata kunci SELECT DISTINCT
Dalam pernyataan SQL, anda boleh menggunakan kata kunci SELECT DISTINCT untuk mendapatkan data unik. Dalam ThinkPHP5, apabila menggunakan kaedah query() kelas thinkDb untuk melaksanakan pernyataan pertanyaan SQL, anda boleh terus menggunakan kata kunci SELECT DISTINCT dalam keadaan pertanyaan, contohnya:
use \think\Db; $data = Db::query('SELECT DISTINCT `brand` FROM `goods` WHERE `category_id` = 1');
Dalam kod di atas , kami menggunakan SELECT DISTINCT Kata kunci memperoleh semua jenama yang goods
ialah 1 dalam jadual category_id
dan memberikan hasil pertanyaan kepada pembolehubah $data.
2. Gunakan kaedah distinct()
Selain menggunakan kata kunci SELECT DISTINCT dalam pernyataan SELECT, anda juga boleh menggunakan kaedah distinct() yang disediakan oleh ThinkPHP5 untuk melaksanakan pertanyaan deduplikasi. Seperti yang ditunjukkan di bawah:
use \think\Db; $data = Db::name('goods') ->where('category_id', 1) ->distinct(true) ->field('brand') ->select();
Dalam kod di atas, kami menggunakan kaedah name() kelas Db untuk menentukan jadual data pertanyaan, menggunakan kaedah where() untuk menentukan syarat penapisan dan menggunakan kaedah distinct() menghidupkan pertanyaan penyahduplikasian, menggunakan kaedah medan() untuk menentukan medan yang hendak ditanya, dan akhirnya menggunakan kaedah pilih() untuk melaksanakan operasi pertanyaan.
3. Gunakan kaedah kumpulan()
Selain menggunakan kata kunci SELECT DISTINCT dan kaedah distinct(), anda juga boleh menggunakan kaedah kumpulan() untuk melaksanakan pertanyaan deduplikasi. Seperti yang ditunjukkan di bawah:
use \think\Db; $data = Db::name('goods') ->where('category_id', 1) ->group('brand') ->select();
Dalam kod di atas, kami menggunakan kaedah name() kelas Db untuk menentukan jadual data pertanyaan, kaedah where() untuk menentukan syarat penapisan dan kumpulan ( ) kaedah untuk mengumpulkan, dan akhirnya kaedah select() digunakan untuk melaksanakan operasi pertanyaan.
Dalam kerja pembangunan sebenar, kita perlu memilih kaedah pertanyaan deduplikasi yang sesuai mengikut keperluan perniagaan tertentu untuk memastikan ketepatan dan kecekapan hasil pertanyaan.
Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar pertanyaan pendua dalam thinkphp5. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!