[Laravel] EloquentのJOINで複数条件を指定したい

2019/08/19

結論

DB::table() ->leftJoin() で第二引数にクロージャーを渡せるので、その中でフィルタ的な処理を書き込む。

詳細

ユーザーが投稿した記事の一覧を取得する際はこんな感じで LEFT JOIN を指定。

ただし、この場合だと LEFT JOIN (テーブル名) ON (条件式…)の条件式部分に1つの条件(通常はキーカラムをマッチさせる)しか指定できない。

「削除フラグが立っている記事は除外したい」なんて時には、クロージャを使って複数条件を設定可能。

下記ソース内の $join には JoinClause オブジェクトが渡ってくる。(JoinClause の詳細)

 

参考情報:下記公式サイトの「上級のJOIN文」部分を参照