このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0068

結果の取得

 データベースの検索結果は、「query()」メソッドやActiveRecordクラスの「get()」、「get_where()」
メソッドにより返される結果オブジェクトに定義されている結果取得用のメソッドを呼び出すことで
取得できます。

結果オブジェクトの取得

 データベースインスタンスの「query()」メソッドや「get()」メソッドから結果オブジェクトを取得します。

    $query = $this->db->query('SELECT * FROM user_tbl');
    $query = $this->db->get('user_tbl');
    $query = $this->db->get_where('user_tbl', $where);

結果オブジェクトの機能

result($type = 'object')

 各行の結果データを一行一要素とする配列を返します。

 引数に文字列「object」、「array」、または、ユーザが定義したクラスのクラス名を指定することができます。  デフォルトは「object」です。

 例えば検索結果が10行となる場合、返される配列の要素数は10個となり、それぞれの要素の型が
「オブジェクト」、「連想配列」、「カスタムオブジェクト」のいずれかになります。

  • object
  • 各行のデータをオブジェクトデータとする配列を返します。

    $result = $query->result('object');
    foreach ($result as $r) {
        echo $r->first_name;
        // 一郎
        echo $r->family_name;
        // 鈴木
    }
    

  • array
  • 各行のデータを連想配列データとする配列を返します。

    $result = $query->result('array');
    foreach ($result as $r) { echo $r['first_name']; // 一郎 echo $r['family_name']; // 鈴木 }

  • カスタムクラス名
  • 各行のデータをカスタムオブジェクトとする配列を返します。
    カスタムオブジェクトは予め定義されていて インスタンス化することができる必要があります。

    // カスタムクラスファイルをインクルード
    require_once(APPPATH . '/models/user.php');
    
    class User_model extends CI_Model { 
    
        public function getData()
        {
            // カスタムクラスを指定
            $result = $query->result('User');
    foreach ($result as $r) { echo $r->first_name; // 一郎 echo $r->family_name; // 鈴木 // カスタムメソッドを実行 echo $r->full_name(); // 鈴木 一郎 } } }
    * 以下のカスタムクラスが定義されていることが前提です。
    class User {
    
        public $first_name; 
        public $family_name; 
    
        // カスタムメソッドの定義
        public function full_name()
        {
            return $family_name . ' ' . $this->first_name;
        }
    
    }
    

result_object()

各行のデータをオブジェクトとして返します。
「result('object')」と同等の結果を返します。


result_array()

各行のデータを連想配列として返します。
「result('array')」と同等の結果を返します。


row($n = 0, $type = 'object')

 一行分の結果データを返します。

 第一引数に数値を指定すると、複数行の結果データから指定された行番号の結果データが返されます。
 デフォルトでは0番目(先頭行)のデータを返します。

 第二引数には、文字列「object」、「array」、または、ユーザが定義したクラスのクラス名を指定することができます。  デフォルトは「object」です。

 第一引数に、数値ではなくテーブルのカラム名を指定することで、結果先頭行の指定された
カラムデータを取得することができます。

  • object
  • 結果データをオブジェクト型で返します。

    $row = $query->row(0, 'object');
    echo $row->first_name; // 一郎
    echo $row->family_name; // 鈴木
    }
    

  • array
  • 結果データを連想配列で返します。

    $row = $query->row(0, 'array');
    echo $row['first_name']; // 一郎
    echo $row['family_name']; // 鈴木
    

  • カスタムクラス名
  • 結果データをカスタムオブジェクトで返します。

    $row = $query->row(0, 'User');
    echo $row->first_name; // 一郎
    echo $row->family_name; // 鈴木
    echo $row->full_name(); // 鈴木 一郎
    
    * 以下のカスタムクラスが定義されていることが前提です。
    class User {
    
        public $first_name; 
        public $family_name; 
    
        // カスタムメソッドの定義
        public function full_name()
        {
            return $family_name . ' ' . $this->first_name;
        }
    
    }
    

  • 特定カラムデータの取得
  • $first_name = $query->row('first_name');
    echo $first_name; // 一郎
    

row_object($n = 0) 一番上に戻る

 引数で指定した数値の行番号の結果データをオブジェクトで返します。
 デフォルトでは0番目(先頭行)のデータを返します。


row_array($n = 0) 一番上に戻る

 引数で指定した数値の行番号の結果データを連想配列で返します。
 デフォルトでは0番目(先頭行)のデータを返します。


first_row($type = 'object') 一番上に戻る

 先頭行の結果データを返します。

 引数には、文字列「object」、「array」、または、ユーザが定義したクラスのクラス名を指定することができます。  デフォルトは「object」です。


last_row($type = 'object') 一番上に戻る

 最終行の結果データを返します。

 引数には、文字列「object」、「array」、または、ユーザが定義したクラスのクラス名を指定することができます。  デフォルトは「object」です。


next_row($type = 'object') 一番上に戻る

 直前に取得したデータの次の行番号のデータを返します。
 次の行番号のデータが存在しない場合は、最終行のデータを返します。
従って、whileループでのイテレータの様な用途では利用できません。

 引数には、文字列「object」、「array」、または、ユーザが定義したクラスのクラス名を指定することができます。  デフォルトは「object」です。

    $first_row = $query->first_row();
    echo $first_row->first_name; // 一郎
    
    $next_row  = $query->next_row();
    echo $next_row->first_name; // 二郎
    

previous_row($type = 'object') 一番上に戻る

 直前に取得したデータの前の行番号のデータを返します。
 前の行番号のデータが存在しない場合は、先頭行のデータを返します。
従って、whileループでのイテレータの様な用途では利用できません。

 引数には、文字列「object」、「array」、または、ユーザが定義したクラスのクラス名を指定することができます。  デフォルトは「object」です。

    $last_row = $query->last_row();
    echo $last_row->last_name; // 今田
    
    $prev_row = $query->previous_row();
    echo $prev_row->last_name; // 前田
    

num_rows() 一番上に戻る

 結果データの総行数を返します。

    if ($query->num_rows() > 0) {
        return $query->result();
    }
    else {
        // 結果データがありません。
        return NULL
    }
    

num_fields() 一番上に戻る

 結果データに含まれる列数(フィールド数)を返します。

    $this->db->select('first_name, last_name');
    $query = $this->db->get('user_tbl');
    echo $query->num_fields(); // 2
    

list_fields() 一番上に戻る

 結果データに含まれるカラム名の配列を返します。

    $this->db->select('first_name, last_name');
    $query = $this->db->get('user_tbl');
    var_export $query->list_fields();
    /*
    array (
      0 => 'first_name',
      0 => 'last_name',
    )
    */
    

free_result() 一番上に戻る

 結果オブジェクトなどの結果リソースをメモリーから解放します。
 メモリーの節約をしたいときに実行するとよいでしょう。