FuelPHP の as_array() で取得したDBデータを、1次元の連想配列に変換する

概要

FuelPHPでは、クエリビルダを使ってDBのデータを取得できます。結果に対してas_array()を使うと2次元の連想配列で取得できます。取得したすべてのレコードをループで処理する場合は、扱いやすい形です。

一方、ある条件に一致するレコードの特定のフィールドを参照するのであれば、1次元の連想配列の方が扱いやすいです。例えば id, name というフィールドの組だけ抽出する場合は、結果に対してas_array('id', 'name')とすると得られます。

それぞれ具体的な事例で見ていきます。

2次元の連想配列を取得する場合

モデル

class Model_Product extends Model
{
//商品一覧を取得
public static function select_products()
{
return DB::select()->from('products')->execute()->as_array();
}
}

コントローラ

class Controller_Home extends Controller
{
public function action_index()
{
// DBからデータを取得
$products = Model_Product::select_products();
// データの内容を確認
Debug::dump($products);
}
}

取得した連想配列

f:id:ishii-akihiro:20191225231051p:plain

1次元の連想配列を取得する場合

as_array()に引数を指定します。コントローラはそのままです。

モデル

class Model_Product extends Model
{
//商品名一覧を取得
public static function select_products()
{
return DB::select()->from('products')->execute()->as_array('id', 'name');
}
}

取得した連想配列

f:id:ishii-akihiro:20191225232622p:plain
id と name の組を key: value の形で取得できました。

ちなみに、as_array('id', 'name', 'price')としても取得結果は同じでした。3つ目以降の引数は無視されるみたいです。

参考

fuelphp.jp

b.0218.jp

タイトルとURLをコピーしました