生活随笔
收集整理的這篇文章主要介紹了
十五、PHP框架Laravel学习笔记——构造器的 join 查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一.join 查詢
使用 join 實現內聯接的多表查詢,比如三張表進行 inner join 查詢;
$users = DB::table('users') ->join('books', 'users.id', '=', 'books.user_id') ->join('profiles', 'users.id', '=', 'profiles.user_id') ->select('users.id', 'users.username', 'users.email', 'books.title', 'profiles.hobby') ->get();
也可以使用 leftjoin 左連接或 rightjoin 右連接實現多表查詢;
$users = DB::table('users') ->leftJoin('books', 'users.id', '=', 'books.user_id') ->rightjoin('profiles', 'users.id', '=', 'profiles.user_id') ->get();
使用 crossjoin 交叉連接查詢,會生成笛卡爾積,再用 distinct()取消重復;
$users = DB::table('users') ->crossJoin('books') ->select('username', 'email') ->distinct() ->get();
如果你想要實現閉包查詢,和 where 類似,只不過要用 on 和 orOn 方法;
$users = DB::table('users') ->join('books', function ($join) { $join->on('users.id', '=', 'books.user_id'); })->toSql();
PS:on()方法后面如果想要再增加篩選條件,可以追加 where();
使用 joinSub 實現子連接查詢,將對應的內容合并在一起輸出;
$query = DB::table('books')->selectRaw('user_id,title');
$users = DB::table('users')->joinSub($query,'books', function ($join) {$join->on('users.id', '=', 'books.user_id'); })->get();
使用 union()或 unionAll()方法實現兩個查詢的合并操作;
$query = DB::table('users');
$users = DB::table('users') ->union($query) ->get();
總結
以上是生活随笔為你收集整理的十五、PHP框架Laravel学习笔记——构造器的 join 查询的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。