Codeigniter4でMySQLに接続しCRUD操作する方法
2024/01/06
Codeigniter4.4.4でMySQLに接続しCRUD操作したい。また、任意のSQL文を発行したい時もあると思うのでその操作方法もあわせてメモ。
目次
リファレンス
https://ci-trans-jp.gitlab.io/user_guide_4_jp/database/index.html
MySQL設定
過去記事を参考の上でMySQL設定を行っておく。
サンプルテーブルの作成
今回は例として以下のようなテーブルを作成した。
mysql> SHOW COLUMNS FROM sample_table; +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int | NO | PRI | NULL | auto_increment | | name | varchar(255) | NO | | NULL | | | age | int | NO | | NULL | | | update_ymd | datetime | NO | | NULL | | | regist_ymd | datetime | NO | | NULL | | +------------+--------------+------+-----+---------+----------------+
MySQLの操作
データベース接続及びテーブルの指定
//データベースへの接続 $db = \Config\Database::connect(); //テーブル指定 $builder = $db->table('sample_table');
データの挿入
$now = date('Y-m-d H:i:s'); $data = [ 'name' => '山田太郎', 'age' => '20', 'update_ymd' => $now, 'regist_ymd' => $now, ]; $builder->insert($data);
データの読み込み
$query = $builder->get(); foreach ($query->getResult() as $row){ var_dump($row); }
limit指定やWhere検索したいような場合はこちらのリファレンスを参照する。
データの更新
$now = date('Y-m-d H:i:s'); $data = [ 'name' => '山田太郎編集', 'age' => '30', 'update_ymd' => $now, ]; $builder->update($data, ['id' => 1]);
データの削除
$builder->delete(['id' => 1]);
任意のSQL文の発行
$sql = ' INSERT INTO sample_table ( `name`, `age`, `update_ymd`, `regist_ymd` ) VALUES ( ' . $db->escape($data['name']) . ', ' . $db->escape($data['age']) . ', ' . $db->escape($data['update_ymd']) . ', ' . $db->escape($data['regist_ymd']) . ' ) '; $query = $db->query($sql);
所感
実運用にあたって
データの挿入・更新は特殊なSQL文を発行するケースは少ないのでクエリビルダクラスを使用し、検索時は任意のSQL文を発行する形になりそう。削除は普段行わない(論理削除する)ので特に気にする必要は無し。
ページャーに関して
MySQLのデータ検索時となるとページネーション機能も基本的にはセットになると思う。ページネーション用ライブラリも用意されているので、こちらの記事等を参考に実装したいところ。
関連記事
-
CodeIgniter4でコントローラ実行の前後に指定したイベントを実行する方法
CodeIgniter4で特定の条件の場合は指定したページにリダイレクトさせたい ...
-
Codeigniter4でエラーログ設定、出力及び確認方法
Codeigniter4.4.4でエラーログの設定を行い特定のファイルに出力させ ...
-
CodeIgniter4でCronを実行する方法
CodeIgniter4.4.4で特定の処理をCronで自動実行させたい。以下に ...
-
CodeIgniterのバージョンの調べ方
CodeIgniterを使っているシステムがあったが、どうも記憶しているディレク ...
-
CodeIgniter4でのメール送信方法(テキスト・HTMLメール)
CodeIgniter4.4.4でテキストメール及びHTMLメールを送信したい。 ...