FuelPHP1.7のDB::select()の返り値とデータ取得

前回はDBクラスの基本的なことについて。
今回はその返り値について。

1.DBクラスでの返り値

日本語ドキュメントより、

SELECTクエリの実行は、要求されたデータベースのレコードの値を含む結果オブジェクトを生成します。 デフォルトでは、結果は連想配列で取得します。

つまり、オブジェクトで返すの?連想配列で返すの?

デフォルトではオブジェクトが返ってくるみたい。
オブジェクト内の取得したデータの構造が、デフォルトでは連想配列ですって意味なのかな。

連想配列ってのはこんな感じの事。
こっちも日本語ドキュメントページから。

Array
(
 [0] => Array
 (
 [name] => Dirk
 )

[1] => Array
 (
 [name] => John
 )

)

デフォルトでは、この連想配列+実行した SQL文なんかも入ってくる。
だからデータを取得する場合は、結果オブジェクトをループして値を取り出さないといけない。

$result = DB::select('name')->from('users')->execute();
foreach($result as $item)
{
$tmp[] = $item->name;
}

ちなみに、取得したオブジェクトをそのままViewに渡すとエラーになるから注意
渡す場合は配列にしないといけないので $tmpを渡す(この場合)。

2.as_array()で返り値を配列に

たぶん、DBから配列で返してもらったほうが早いよね。
自分もこっちを使ってる。

SQL分の最後に「as_array()」をつけると配列で返してくれる。

$result = DB::select('name')->from('users')->execute()->as_array();

foreach($result as $item)
{
$tmp[] = $item['name'];
}

as_array()から返る連想配列のキーを指定することもできる。

$result = DB::select('name')->from('users')->execute()->as_array('id');

foreach($result as $item)
{
$tmp[] = $item['name'];
}

この場合、idが重複してると問答無用で上書きしてくるので注意する。

参考

Query Builder Select – クラス – FuelPHP ドキュメント

FuelPHP1.6、クエリビルダを理解する(2)検索その2|マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~

コメント

  1. Johne667 より:

    Hi, yup this post is truly fastidious and I have learned lot of things from it deaffagfebdk

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