概要
SQLではフィールド名やテーブル名のエイリアスを定義できるが、同じことがクエリービルダーでもできる。
- フィールド名のエイリアスは、
select()メソッドのフィールド名の引数にそのままASを書く JOINされるテーブルのエイリアスはjoin()メソッドのテーブル名の引数にそのままASを書く- 親テーブルのエイリアスは
from()メソッドの引数で指定する
SQLの記述
元のSQLとして以下を使う。
|
1 2 3 4 5 6 |
SELECT customers.name, emails.address FROM customers LEFT JOIN emails ON customers.id = emails.id; |
このSQLでフィールド名とテーブル名のエイリアスを以下のように定義する。これと同じことをクエリービルダーで書いていく。
|
1 2 3 4 5 6 |
SELECT c.name AS customer_name, e.address AS email_address FROM customers as c LEFT JOIN emails as e ON c.id = e.id; |
クエリービルダーの記述
オリジナル
元のSQLに対応するクエリービルダーは以下のとおり。
|
1 2 3 4 5 |
$customers = Customer:: select('customers.name', 'emails.address') ->leftJoin('emails', 'customers.id', '=', 'emails.customer_id') ->get(); |
フィールド名のエイリアス
フィールド名のエイリアスは、select()メソッドのフィールド名の引数にas aliasで定義。
|
1 2 3 4 5 |
$customers = Customer:: select('customers.name as customer_name', 'emails.address as mail_address') ->leftJoin('emails', 'customers.id', '=', 'emails.customer_id') ->get(); |
JOINされるテーブルのエイリアス
親テーブルに結合される子テーブルのエイリアスは、join()メソッドのテーブルを指定する引数(第1引数)でas aliasを指定する。
|
1 2 3 4 5 |
$customers = Customer:: select('customers.name as customer_name', 'e.address as mail_address') ->leftJoin('emails as e', 'customers.id', '=', 'e.customer_id') ->get(); |
親テーブルのエイリアス
親テーブルのエイリアスは、最初にfrom()メソッドを呼んでその引数で指定する。select()メソッドはメソッドチェーンで繋げる。
|
1 2 3 4 5 |
$customers = Customer::from('customers as c') ->select('c.name as customer_name', 'e.address as mail_address') ->leftJoin('emails as e', 'c.id', '=', 'e.customer_id') ->get(); |