多次元連想配列で返ってくるのはありがたいんだけれど、取得するカラムが 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();