Dalam thinkphp5, join digunakan untuk menanyakan data daripada dua atau lebih jadual berdasarkan hubungan antara lajur dalam jadual ini. Hasil yang dikembalikan ialah objek model. join (nama jadual untuk dikaitkan dan alias [keadaan persatuan [jenis persatuan]])".
Persekitaran pengendalian artikel ini: sistem Windows 10, ThinkPHP versi 5, komputer Dell G3.
Kaedah JOIN juga merupakan salah satu kaedah operasi koheren, yang digunakan untuk membuat pertanyaan daripada dua atau lebih jadual berdasarkan hubungan antara lajur dalam data-data ini.
Penerangan
object join ( mixed join [, mixed $condition = null [, string $type = 'INNER']] )
Parameter
serta: Nama jadual (lengkap) dan alias yang akan dikaitkan, menyokong tiga kaedah penulisan:
Kaedah penulisan 1: ['Lengkapkan nama jadual atau subquery'=>'alias']
Kaedah penulisan 2: 'Lengkapkan nama jadual alias'
Penulisan 3: 'Nama jadual tanpa awalan jadual data'
keadaan: keadaan persatuan. Ia boleh menjadi rentetan atau tatasusunan Apabila ia adalah tatasusunan, setiap elemen ialah syarat yang berkaitan.
jenis: jenis yang berkaitan. Boleh jadi: DALAM, KIRI, KANAN, PENUH, tidak peka huruf besar-kecil, lalai ialah DALAM.
Nilai pulangan: Objek model
bergabung biasanya mempunyai jenis berikut. Jenis operasi gabungan yang berbeza akan menjejaskan hasil data yang dikembalikan.
SERTAI DALAM: Setara dengan JOIN (jenis JOIN lalai), jika terdapat sekurang-kurangnya satu perlawanan dalam jadual, baris dikembalikan
LEFT JOIN : Kembalikan semua baris dari jadual kiri walaupun tiada padanan dalam jadual kanan
RIGHT JOIN: Kembalikan semua baris dari jadual kanan walaupun tiada padanan dalam meja sebelah kiri
SERTAI PENUH: Selagi ada perlawanan dalam salah satu jadual, kembalikan baris
Contohnya seperti berikut :
Db::table('think_artist') ->alias('a') ->join('think_work w','a.id = w.artist_id') ->join('think_card c','a.card_id = c.id') ->select();
Db::table('think_artist') ->alias('a') ->join('__WORK__ w','a.id = w.artist_id') ->join('__CARD__ c','a.card_id = c.id') ->select();
$join = [ ['think_work w','a.id=w.artist_id'], ['think_card c','a.card_id=c.id'], ]; Db::table('think_user')->alias('a')->join($join)->select();
Tiga kaedah penulisan di atas mempunyai kesan yang sama __WORK__ dan __CARD__ akan ditukar kepada think_work dan think_card semasa analisis akhir. Nota: Nama jadual di tengah kaedah '_table name_' perlu menggunakan huruf besar
Jika anda tidak mahu menggunakan alias, nama penuh jadual mesti digunakan dalam keadaan seterusnya. Anda boleh menggunakan kaedah berikut
Db::table('think_user')->join('__WORK__','__ARTIST__.id = __WORK__.artist_id')->select();
Kaedah INNER JOIN digunakan secara lalai Jika anda perlu menggunakan kaedah JOIN lain, anda boleh menukarnya kepada
Db::table('think_user')->alias('a')->join('word w','a.id = w.artist_id','RIGHT')->select();
Nama jadual. juga boleh menjadi subkueri
$subsql = Db::table('think_work')->where(['status'=>1])->field('artist_id,count(id) count')->group('artist_id')->buildSql(); Db::table('think_user')->alias('a')->join([$subsql=> 'w'], 'a.artist_id = w.artist_id')->select();
Kerana buildSql mengembalikan Pernyataan tersebut mengandungi (), jadi tidak perlu menambah () pada kedua-dua hujungnya.
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Apakah kegunaan join dalam thinkphp5. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!