Laravel接続(Join)
ないぶせつぞく
SQL文に変換:
左の接続
内部接続ではなく左接続を使用したい場合は、
クロスコネクション
「クロスコネクション」を実行するには、
高度な接続文
さらに、より高度な接続句を指定して、
ユニオン
クエリー・ビルダーでは、2つのクエリーを結合するショートカットも用意されています.たとえば、クエリーを作成してからunionメソッドを使用して2番目のクエリーと結合できます.
注:
$users = Book::join('auth','book.auth_id','auth.id')
->select('book.*','auth.name as auth_name')
->get()
->toArray()
SQL文に変換:
select `bl_book`.*, `bl_auth`.`name` as `auth_name` from `bl_book` inner join `bl_auth` on `bl_book`.`auth_id` = `bl_auth`.`id`
左の接続
内部接続ではなく左接続を使用したい場合は、
left join
と同様に使用できます.$users = Book::leftJoin('auth','book.auth_id','auth.id')
->select('book.*','auth.name as auth_name')
->get()
->toArray()
クロスコネクション
「クロスコネクション」を実行するには、
join
メソッドを使用して、クロスコネクションしたいテーブル名をメソッドに渡すことができます.クロスコネクションは、最初のテーブルと接続されたテーブルの間にデカルト積を生成します.$users = User::crossJoin('auth')
->get();
高度な接続文
さらに、より高度な接続句を指定して、
crossJoin
メソッドに2番目のパラメータとして閉パケットを渡すこともできます.この閉パケットは、join
オブジェクトを受信して、JoinClause
句制約を指定します.users = Book::join('auth',function ($join){
$join->on('book.auth_id','auth.id')
->Where('book.id' , '>','3');
})
->get()
->toArray();
ユニオン
クエリー・ビルダーでは、2つのクエリーを結合するショートカットも用意されています.たとえば、クエリーを作成してからunionメソッドを使用して2番目のクエリーと結合できます.
$user_name = User::select('name');
$users = User::select('password')->union($user_name)->get();
注:
join
メソッドも有効であり、unionAll
の使用方法と同じです.