Apabila membangunkan aplikasi web, anda selalunya perlu menanyakan data daripada berbilang jadual, dan thinkphp ialah rangka kerja PHP yang sangat popular dan mudah yang menyokong pelbagai operasi pangkalan data. Artikel ini akan memperkenalkan cara menggunakan thinkphp untuk menanyakan dua jadual.
Langkah satu: Dapatkan objek pangkalan data
Dalam thinkphp, kita boleh mendapatkan objek pangkalan data melalui kod berikut:
$db = \think\Db::connect();
Jika konfigurasi pangkalan data telah disediakan , Anda boleh menggunakan thinkDb::name('表名')
terus untuk mendapatkan objek yang mengendalikan jadual pangkalan data.
Langkah 2: Pertanyaan jadual bersama
Dalam thinkphp, gunakan kaedah join()
untuk melaksanakan pertanyaan jadual bersama.
Sebagai contoh, kami mempunyai dua jadual user
dan order
, yang mempunyai ID pengguna yang sama Kami perlu menanyakan nama pengguna, nombor pesanan dan maklumat lain. Berikut ialah kod pertanyaan:
$data = \think\Db::name('user') ->join('order', 'user.id = order.user_id') ->field('user.name, order.order_no') ->select();
join
Kaedah menerima dua parameter Parameter pertama ialah nama jadual yang hendak dicantumkan, dan parameter kedua ialah keadaan perkaitan. Dalam contoh di atas, kami menggunakan jadual user
sebagai jadual utama, jadual order
sebagai jadual bercantum dan keadaan perkaitan ialah user.id = order.user_id
. Kaedah
field
boleh menentukan medan untuk ditanya, yang boleh mengelakkan medan yang tidak diperlukan dan meningkatkan kecekapan pertanyaan.
Akhirnya memanggil kaedah select
untuk melaksanakan operasi pertanyaan dan mengembalikan set hasil.
Langkah 3: Pertanyaan gabungan kiri
Pertanyaan sertai kiri juga merupakan kaedah pertanyaan jadual bersama yang biasa digunakan. Ia boleh menanyakan semua data dalam jadual induk dan menggabungkan data jadual hamba yang sepadan bersama-sama mengikut keadaan persatuan.
Berikut ialah contoh pertanyaan sebelah kiri:
$data = \think\Db::name('user') ->alias('u') ->join('order o', 'u.id = o.user_id', 'LEFT') ->field('u.*, o.order_no') ->select();
Antaranya, kaedah alias
digunakan untuk menetapkan alias untuk jadual utama, yang mudah untuk mengurus dan bertanya. join
Parameter ketiga kaedah menetapkan jenis jadual sambung, di sini ialah pertanyaan sambung kiri. Antara parameter kaedah field
yang terakhir, u.*
bermaksud menanyakan semua medan jadual pengguna dan o.order_no
bermaksud menanyakan medan nombor pesanan jadual pesanan.
Langkah 4: Pertanyaan SQL asli
Dalam sesetengah kes, penggunaan fleksibel pernyataan SQL asli boleh menjadi lebih mudah dan lebih pantas. thinkphp juga menyokong pertanyaan SQL asli, hanya panggil kaedah query
.
Berikut ialah contoh pertanyaan SQL asli:
$sql = "SELECT u.name, o.order_no FROM `user` u LEFT JOIN `order` o ON u.id = o.user_id WHERE u.status = 1"; $data = \think\Db::query($sql);
Dalam contoh di atas, kami menggunakan pernyataan SQL asli untuk menyambung dua jadual dan menambah WHERE
Syarat penapis ke tanya semua pengguna dengan status 1 dan nombor pesanan mereka.
Ringkasan
Dalam thinkphp, pertanyaan sertai jadual boleh dilaksanakan menggunakan kaedah join()
pertanyaan sertaan kiri boleh dilaksanakan dengan menetapkan jenis jadual gabungan, atau ia boleh disoal menggunakan SQL asli kenyataan. Penggunaan kaedah ini yang munasabah dan fleksibel boleh menjadikan pertanyaan lebih pantas dan lebih cekap.
Atas ialah kandungan terperinci Bagaimana thinkphp melaksanakan pertanyaan antara dua jadual. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!