Lihat Pertanyaan (Pembina Pertanyaan 10)
Pertanyaan paparan boleh melaksanakan pertanyaan berbilang jadual yang tidak bergantung pada paparan pangkalan data dan tidak memerlukan sokongan pangkalan data untuk paparan Ia adalah alternatif yang disyorkan kepada kaedah JOIN Contohnya:
Db::view('User', 'id,name') ->view('Profile', 'truename,phone,email', 'Profile.user_id=User.id') ->view('Score', 'score', 'Score.user_id=Profile.id') ->where('score', '>', 80) ->select();
Pernyataan SQL yang dihasilkan adalah serupa dengan :
SELECT User.id,User.name,Profile.truename,Profile.phone,Profile.email,Score.score FROM think_user User INNER JOIN think_profile Profile ON Profile.user_id=User.id INNER JOIN think_socre Score ON Score.user_id=Profile.id WHERE Score.score > 80
Perhatikan bahawa pertanyaan paparan Tidak perlu memanggil jadual dan kaedah gabungan, dan apabila memanggil kaedah di mana dan susunan, anda hanya perlu menggunakan nama medan tanpa menambah nama jadual.
Pertanyaan join INNER digunakan secara lalai Jika anda perlu menukarnya, anda boleh menggunakan:
Db::view('User', 'id,name') ->view('Profile', 'truename,phone,email', 'Profile.user_id=User.id', 'LEFT') ->view('Score', 'score', 'Score.user_id=Profile.id', 'RIGHT') ->where('score', '>', 80) ->select();
Pernyataan SQL yang dijana adalah serupa dengan:
SELECT User.id,User.name,Profile.truename,Profile.phone,Profile.email,Score.score FROM think_user User LEFT JOIN think_profile Profile ON Profile.user_id=User.id RIGHT JOIN think_socre Score ON Score.user_id=Profile.id WHERE Score.score > 80
Anda boleh menggunakan alias:
Db::view('User', ['id' => 'uid', 'name' => 'account']) ->view('Profile', 'truename,phone,email', 'Profile.user_id=User.id') ->view('Score', 'score', 'Score.user_id=Profile.id') ->where('score', '>', 80) ->select();
Pernyataan SQL yang dihasilkan menjadi:
SELECT User.id AS uid,User.name AS account,Profile.truename,Profile.phone,Profile.email,Score.score FROM think_user User INNER JOIN think_profile Profile ON Profile.user_id=User.id INNER JOIN think_socre Score ON Score.user_id=Profile.id WHERE Score.score > 80
Anda boleh menggunakan tatasusunan Tentukan nama jadual dan alias, contohnya:
Db::view(['think_user' => 'member'], ['id' => 'uid', 'name' => 'account']) ->view('Profile', 'truename,phone,email', 'Profile.user_id=member.id') ->view('Score', 'score', 'Score.user_id=Profile.id') ->where('score', '>', 80) ->select();
Pernyataan SQL yang dijana menjadi:
SELECT member.id AS uid,member.name AS account,Profile.truename,Profile.phone,Profile.email,Score.score FROM think_user member INNER JOIN think_profile Profile ON Profile.user_id=member.id INNER JOIN think_socre Score ON Score.user_id=Profile.id WHERE Score.score > 80