LaravelのEloquentやクエリビルダでのJOIN【現役SEが解説】

PROGRAM

今回は、LaravelのEloquentやクエリビルダでのJOINについて、簡単に解説していきます。

EloquentでJOIN

LaravelではElequentでJOINさせることができます。

そのためには、modelのjoinメソッドを使うことになります。

Employee::from( 'employees as e' )
	->join('departments as d', 'e.department_id', '=', 'd.id')
	->get();

上記の例では、従業員と部署のテーブルをJOINさせています。

クエリビルダでJOIN

LaravelにおいてはクエリビルダでもJOINさせることが可能です。

このケースでは、DBクラスのtableメソッドとjoinメソッドを使います。

DB::table('employees as e')
	->join('departments as d', 'e.department_id', '=', 'd.id')
	->get();

上記のコードの例もEloquentの例と同様に、従業員と部署のテーブルをJOINさせています。

LEFT JOIN

Laravelには、(左)外部結合をするためのleftJoinメソッドがあります。

DB::table('employees')
	->leftJoin('sales as s', 'e.id', '=', 's.employee_id')
	->get();

上記のコードでは、クエリビルダでLEFT JOIN(左外部結合)させています。

このコードの結果としては、従業員ごとに売上を1件ずつ取得し、売上のない従業員は売上情報がNULLになります。