Fuelphp:selectメソッドで別名(エイリアス)を付けたデータ取得

FuelphpDBクラスselectメソッドを使ってデータを取得する時に、
フィールド別名エイリアス)を付けてデータを取得する方法をメモします。

複数のテーブルをJOINしてデータを取得するとフィールド名が重複してしまうことがあります。
その際は、重複したフィールド名に別名(エイリアス)を付けてデータを取得すると思います。

SELECT文を実行する時に「AS句」を使用すればフィールド名に別名を付けることができます。

SQL文をそのまま記述してもいいのですが、Fuelphpの「DB::select」で
別名を付けてデータを取得する方法がありました。

下記にそのフィールド名に別名を付けた時の方法を記述します。


別名(エイリアス)を付けたデータ取得

「DB::select」のフィールド名の指定の箇所に
配列で指定すると別名を付けることができます。

下記のように配列を指定します。

DB::select(array('列名', '別名'))->from('テーブル名')

使用方法

エイリアスを指定したい列は配列で指定します。

$query = DB::select('id', array('name', 'user_name'))->from('user');
$result = $query->execute()->as_array();

実行されるSQL文

SELECT `id`, `name` AS `user_name` FROM `user`

・JOINを使用する場合

$query = DB::select('user.id', array('user.name', 'user_name'), array('group.name', 'group_name'))->from('user');
$query->join('group', 'LEFT');
$query->on('user.group_id', '=', 'group.id');
$result = $query->execute()->as_array();

実行されるSQL文

SELECT `user`.`id`, `user`.`name` AS `user_name`, `group`.`name` AS `group_name` FROM `user` LEFT JOIN `group` ON (`user`.`group_id` = `group`.`id`)

Fuelphp:DBクラスを使用したデータ取得

fuelphpDBクラスを使用し、データベースのデータを取得する方法をメモします。
データを取得する際はselect()メソッドを使用するとテーブル名やフィールド名などを
記述するだけで簡単に値を取得することができます。

また、直接SQL文を記述したい場合はquery()メソッドを使用しデータを取得します。
下記にselect()メソッドquery()メソッドの使用例を記載します。


select()メソッド

select()メソッドは、新しいDatabase_Query_Builder_Selectオブジェクトを返します。
select()メソッドを使用した場合は、自動的にエスケープされるのでSQLインジェクション対策が施されます。

・使用例


$query = \DB::select('id')->from('hoge_table');
$query->where('status', 1);
$res = $query->execute()->as_array();

query()メソッド

query()メソッドは、新しいDatabase_Queryオブジェクトを返します。
query()メソッドを使用する場合は、直接SQL文を記載します。

・使用例(SQL文の直接記述)


$sql = "SELECT id FROM hoge_table WHERE status = 1";
$query = \DB::query($sql);
$res = $query->execute()->as_array();

複雑なSQL文などを書く場合などに便利です。
しかし、エスケープ処理がされないので注意が必要です。