サーチ…


データの選択

次の関数を使用すると、SQL SELECT文を作成できます。

$this->db->get()

選択クエリが実行され、結果が返されます。テーブルからすべてのレコードを取得するために単独で使用できます。

$query = $this->db->get('tablename');  // Produces: SELECT * FROM tablename

2番目と3番目のパラメータを使用すると、limit句とoffset句を設定できます。

$query = $this->db->get('tablename', 10, 20);

// Executes: SELECT * FROM tablename LIMIT 20, 10
// (in MySQL. Other databases have slightly different syntax)

データの選択

条件付きデータの選択

$query  = $this->db->select('*')
                   ->from('table_name')
                   ->where('column_name', $value) // Condition 
                   ->get();
return $query->result();

複数の条件でデータを選択する

$conditions = array('column_name_1' => $value_1, 'column_name_2' => $value_2);
$query  = $this->db->select('*')
                   ->from('table_name')
                   ->where($conditions) // Conditions
                   ->get();
return $query->result();

条件と制限付きのデータを選択する

$query  = $this->db->select('*')
                   ->from('table_name')
                   ->where('column_name', $value) // Condition
                   ->limit(10) // Maximum 10 rows
                   ->get();
return $query->result();

条件、最大行数、降順データの選択

$query  = $this->db->select('*')
                   ->from('table_name')
                   ->where('column_name', $value) // Condition
                   ->limit(10) // Maximum 10 rows 
                   ->order_by('id','DESC') // Order data descending 
                   ->get();
return $query->result();

2番目のオプションパラメータでデータを選択する

通常、CodeIgniterではselect([$select = '*'[, $escape = NULL]])で2番目のパラメータを使用していません。 FALSEに設定すると、CodeIgniterはフィールド名やテーブル名を保護しようとしません。

次の例では、sql queryを使用してdatetime型のフィールドを選択し、 FALSE設定しFALSE (これにより、CIが自動的にクエリをエスケープしないように指示します)。

public function getUserInfo($id)
{
    $this->db->select('BaseTbl.id, BaseTbl.name, DATE_FORMAT(BaseTbl.createdDtm, "%d-%m-%Y") AS createdDtm', FALSE); // FALSE is the second optional parameter
    $this->db->from('tbl_users as BaseTbl');
    $this->db->where('isDeleted', 0);
    $this->db->where('BaseTbl.id', $id);
    $query = $this->db->get();
            
    return $query->result();
}

FALSEに設定しないと、自動的にエスケープしてクエリが中断されます。

クエリビルダを使用したテーブルの結合

場合によっては、複数のテーブルを結合して、集計データを取得する必要があります。ここでは、CodeIgniter Query Builder / Active Recordsを使用して同じことを達成する方法を示します。

public function getStudentInfo($studentid){
    $query = $this->db->select("st.id, st.name, st.class, mk.maths, mk.science")
               ->from("students as st")
               ->join("marks as mk", "mk.student_id = st.id", "inner")
               ->where("st.id", $studentId)
               ->get();
    return $query->result();        
}

ここでは、join()を使用して複数のテーブルを結合し、 "inner"、 "left"、 "right"などの3番目のパラメータで結合タイプを変更できます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow