FuelphpのDBクラスで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`)