多次元連想配列で返ってくるのはありがたいんだけれど、取得するカラムが 2 つだった時に 1 次元で返して欲しかったので色々したメモ。
前提 FuelPHP の DB クラスで結果は連想配列で取得できる。(デフォルト)
DB クラスを使う DB クラスを使ってテーブルの値を取得する。
$result = DB :: select ( 'user_id' , 'user_name' )-> from ( 'users' )-> execute ();
$result_array = $result -> as_array ();
Debug :: dump ( $result_array ); 取得結果 取得した結果は以下のような感じの構成になっているはず。
array (
array (
'yamada' => '山田奈緒子'
),
array (
'ueda' => '上田次郎'
),
array (
'yabe' => '矢部謙三'
)
); 個人的にこんな感じで欲しかったので FuelPHP のクラスを使って
array (
'yamada' => '山田奈緒子' ,
'ueda' => '上田次郎' ,
'yabe' => '矢部謙三'
); 取得 Arr クラスのassoc_to_keyvalを使う
$result = DB :: select ( 'user_id' , 'user_name' )-> from ( 'users' )-> execute ();
$result_array = $result -> as_array ();
$result_array = Arr :: assoc_to_keyval ( $result_array , 'user_id' , 'user_name' ); これで意図した配列になった。
assoc_to_keyvalは key の添字と value の添字を指定しないといけない。ここでは DB クラスから取得してきた連想配列なのでテーブルのカラム名(物理)になっているのでそれを指定してやる必要がある。 これの指定をミスると空ぶってしまうので DB クエリでエイリアスを指定してやるとミスが減るかもしれない。
DB :: select ( array ( 'user_id' , 'namae' ))-> from ( 'users' )-> execute (); 追記 execute()->as_array(キー)を使う はてブにて、id:Kenji_sさんから「execute()->as_array(キー) で ok」というコメントを頂いたのでas_array(キー)で確認してみました。
$result = DB :: select ( 'user_id' , 'user_name' )-> from ( 'users' )-> execute ()-> as_array ( 'user_id' , 'user_name' ); 前述と同じく意図した配列がスマートに取得できた。今後はこの方法でやることにした。