Active Record (書込み処理)
CodeIgniterのActiveRecordを利用した、データベースへのデータの追加や更新、削除といった
書き込み処理を行う方法を解説していきます。
データ準備
set($key, $value = '', $escape = TRUE)
「INSERT INTO」文、「REPLACE INTO」文、または、「UPDATE」文で、追加、または、更新するデータの指定を行います。
データは、第一引数に「フィールド名」、第二引数に「値」を一つづつ指定する方法と、 連想配列、または、オブジェクトによる複数のデータをまとめて指定する方法があります。
- 一つづつ指定
- 連想配列で指定
- オブジェクトで指定
$this->db->set('family_name', '鈴木');
$this->db->insert('any_table');
'first_name' => '一郎',
'family_name' => '鈴木',
);
$this->db->set($data);
$this->db->update('any_table');
// models/some_data.php class Some_data extendsCI_Model { public $first_name = '一郎'; public $family_name = '鈴木'; }
$this->db->set($this->some_data);
$this->db->insert('any_table');
データ追加
insert($table = '', $set = NULL)
「INSERT INTO」文を生成して実行します。
第一引数にテーブル名を指定します。
第二引数には、連想配列、または、オブジェクトデータを指定できます。
「set()」メソッドと「insert()」メソッドの両方でデータを指定した場合は、両方のデータが利用されますが、フィールド名が重複した場合は、「insert()」メソッドでの値が優先されます。
$data = array(
'first_name' => 'サブロー',
'family_name' => '鈴木',
);
$this->db->insert('any_table', $data);
insert_batch($table = '', $set = NULL) 一番上に戻る
複数レコードを挿入する「INSERT INTO」文を生成して実行します。
第一引数には、テーブル名を指定します。
第二引数には、一つ以上の連想配列、または、オブジェクトデータの要素を持つ配列を指定することができます。
$data = array( array( 'first_name' => '一郎', 'family_name' => '鈴木', ), array( 'first_name' => '太郎', 'family_name' => '山田', ), ); $this->db->insert_batch('any_table', $data);
VALUES ('一郎', '鈴木'), ('太郎', '山田')
replace($table = '', $set = NULL) 一番上に戻る
「REPLACE INTO」文を生成して実行します。
引数の指定方法は、「insert()」メソッドと同様です。
'member_id' => 33333,
'first_name' => 'サブロー',
'family_name' => '鈴木',
);
$this->db->replace('any_table', $data);
VALUES (33333, 'サブロー', '鈴木')
データ更新
update($table = '', $set = NULL, $where = NULL, $limit = NULL) 一番上に戻る
「UPDATE」文を生成して実行します。
第一引数には、テーブル名を指定します。
第二引数は、更新するデータを連想配列で指定することができます。
事前に「set()」メソッドで指定しておくことも可能です。
第三引数は、更新条件(WHERE)を連想配列で指定することができます。
事前に「where()」メソッドで指定しておくことも可能です。
第四引数は、更新行数の最大値を指定することができます。
事前に「limit()」メソッドで指定しておくことも可能です。
'first_name' => '次郎' );
$where = array(
'member_id' => 120
);
$this->db->update('any_table', $data, $where);
$this->db->where('member_id', 120);
$this->db->update('any_table');
データ削除
delete($table = '', $where = '', $limit = NULL) 一番上に戻る
「DELETE FROM」文を生成して実行します。
第一引数には、テーブル名を指定します。
第二引数は、削除条件(WHERE)を連想配列で指定することができます。
事前に「where()」メソッドで指定しておくことも可能です。
第三引数は、削除行数の最大値を指定することができます。
事前に「limit()」メソッドで指定しておくことも可能です。
第二引数での条件指定や、「where()」メソッドなどで条件が指定されていない場合は、
データの削除は行われずFALSEが返されます。
全データを削除する場合は、「empty_table()」メソッドを利用します。
'member_id' => 120
);
$this->db->delete('any_table', $where);
同じ削除条件であれば、第一引数にテーブル名の配列を指定することで、 複数のテーブルからデータを削除することも可能です。
'member_id' => 120
);
$tables = array(
'table_one',
'table_two',
'table_three',
);
$this->db->delete($tables, $where);
DELETE FROM `table_two` WHERE `member_id` = 120
DELETE FROM `table_three` WHERE `member_id` = 120
empty_table($table = '') 一番上に戻る
引数で指定したテーブルの全データを削除します。
truncate($table = '') 一番上に戻る
「TRUNCATE」文による全データの削除を行います。
「empty_table()」メソッドより高速ですが、トランザクションが利かないためロールバックができないことに注意してください。
「TRUNCATE」文が用意されていないDBエンジンでは、「DELETE」文が実行されます。