FuelphpのDBクラスでselectメソッドを使ってデータを取得する時に、
フィールドに別名(エイリアス)を付けてデータを取得する方法をメモします。
複数のテーブルをJOINしてデータを取得するとフィールド名が重複してしまうことがあります。
その際は、重複したフィールド名に別名(エイリアス)を付けてデータを取得すると思います。
SELECT文を実行する時に「AS句」を使用すればフィールド名に別名を付けることができます。
SQL文をそのまま記述してもいいのですが、Fuelphpの「DB::select」で
別名を付けてデータを取得する方法がありました。
下記にそのフィールド名に別名を付けた時の方法を記述します。
■ 別名(エイリアス)を付けたデータ取得
「DB::select」のフィールド名の指定の箇所に
配列で指定すると別名を付けることができます。
下記のように配列を指定します。
1 | DB::select( array ( '列名' , '別名' ))->from( 'テーブル名' ) |
■ 使用方法
エイリアスを指定したい列は配列で指定します。
1 2 | $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を使用する場合
1 2 3 4 | $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`)