生活の跡

個人的な備忘録

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