概要
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(); |