CodeIgniterのモデル作成ガイド!初心者でもデータベース操作がマスターできる基本手順
生徒
「CodeIgniterでデータベースからデータを持ってきたいのですが、どうすればいいですか?」
先生
「それには『モデル(Model)』という仕組みを使うのが一番ですよ。」
生徒
「モデル……ですか?難しそうですね。プログラミング初心者でも作れますか?」
先生
「大丈夫です!ルールに沿ってファイルを作るだけで、簡単にデータベースを操作できるようになります。基本から一緒に学んでいきましょう!」
1. モデル(Model)とは何かを理解しよう
パソコンを触ったことがない方にとって、「モデル」という言葉は聞き馴染みがないかもしれません。簡単に言うと、モデルとは「データベースとのやり取りを専門に担当する係の人」のことです。CodeIgniter(コードイグナイター)というPHPのフレームワークでは、役割分担を明確にするために、このモデルという仕組みを導入しています。
例えば、あなたが図書館で本を探しているとしましょう。自分で本棚をすべて探しまわるのは大変ですよね?そこで、「本を探して持ってくる専門のスタッフ」がいれば、あなたは「〇〇という本をください」と頼むだけで済みます。この「専門スタッフ」がプログラミングの世界でいう「モデル」なのです。データベースという巨大な本棚から、必要なデータを取り出したり、新しいデータを書き込んだりするのがモデルの役割です。
モデルを使うことで、プログラムが整理整頓され、どこに何が書いてあるのかが分かりやすくなります。これは開発効率を上げるだけでなく、ミスを減らすためにも非常に重要な考え方なのです。まずは「データベースのことならモデルにお任せ!」と覚えておきましょう。
2. モデルクラスを作成する準備とルール
モデルを作るには、まず決まった場所にファイルを作成する必要があります。CodeIgniter4の場合、app/Modelsというフォルダの中にファイルを作ります。ここがモデルさんたちの「詰所」のような場所です。ファイルを作成する際には、いくつか大切なルールがあります。
一つ目は「クラス名」です。クラスとは、プログラムの設計図のようなものです。モデルのクラス名は、先頭を大文字にするのが一般的です。例えば、ユーザー情報を扱うなら UserModel.php という名前にします。二つ目は「継承(けいしょう)」です。これは、CodeIgniterがあらかじめ用意してくれている便利な機能を、自分が作るモデルでも使えるように「引き継ぐ」ことを指します。
パソコンの操作に慣れていない方は、ファイル名の一文字目が大文字であることを特に意識してください。小文字にしてしまうと、プログラムが「そんなファイルはありません」と怒ってしまうことがあります。名前の付け方は自由ですが、誰が見ても何をするためのモデルか分かる名前にするのがプロのコツです。例えば「お花」のデータを扱うなら FlowerModel、「注文」なら OrderModel といった具合です。
3. 基本的なモデルの書き方(ソースコード)
では、実際にモデルのコードを書いてみましょう。ここでは「ブログの記事」を管理するためのシンプルなモデルを作成する例を紹介します。以下のコードを app/Models/BlogModel.php というファイルに記述します。
namespace App\Models;
use CodeIgniter\Model;
class BlogModel extends Model
{
// 操作するテーブルの名前を指定します
protected $table = 'posts';
// データベースの主キー(背番号のようなもの)を指定します
protected $primaryKey = 'id';
// 編集を許可する項目の名前を登録します
protected $allowedFields = ['title', 'content', 'author'];
}
このコードの中で namespace と書かれている部分は、このファイルがどこにあるかを指し示す住所のようなものです。また、extends Model と書くことで、CodeIgniterが持つ「データを検索する」「データを保存する」といった魔法のような機能をこのクラスで使えるようにしています。$table には、実際にデータが保存されているテーブル(表)の名前を書きます。これだけで、データベースとの橋渡しができるようになるのです。
4. データベースから全てのデータを取得する方法
モデルを作ったら、次はそれを使ってデータを取り出してみましょう。最もよく使うのは、保存されているすべてのデータを持ってくる操作です。これを「全件取得」と呼びます。コントローラーという別のファイルから、先ほど作ったモデルを呼び出して命令を出します。
以下のコードは、モデルを使ってデータベースの中身をすべて取り出し、画面に表示させるイメージです。
$blogModel = new \App\Models\BlogModel();
// findAll()は「全部持ってきて!」という魔法の言葉です
$allPosts = $blogModel->findAll();
foreach ($allPosts as $post) {
echo $post['title'] . '<br>';
}
実行結果は、データベースに登録されている記事のタイトルが並んで表示されます。
初めてのプログラミング
CodeIgniterの使い方
モデルの基本を学ぼう
findAll() という命令一言で、裏側で複雑な命令(SQL)が発行され、データが手元に届きます。自分で長い命令を書かなくて良いのがCodeIgniterの素晴らしいところです。初心者の方は、この「モデルを作って、特定の命令を出す」という流れを何度も繰り返して手に馴染ませていきましょう。これがWebアプリケーション作成の第一歩となります。
5. 特定の条件でデータを検索するテクニック
全てのデータではなく、「特定の誰かの記事だけ」や「特定の番号の記事だけ」を見つけたい場合もありますよね。これは図書館で特定のキーワードで検索するのと同じです。モデルを使えば、こうした絞り込みも非常に簡単に行うことができます。
例えば、id という背番号が 1 番の記事だけを探したいときは、find() という命令を使います。また、特定の名前の著者が書いた記事だけを探したいときは where() という命令を組み合わせます。これらを使いこなすことで、ユーザーが見たい情報だけを正確に表示できるようになります。
$blogModel = new \App\Models\BlogModel();
// idが2番のデータだけをピンポイントで取得します
$singlePost = $blogModel->find(2);
// 作者が「田中」さんのデータだけを探します
$tanakaPosts = $blogModel->where('author', '田中')->findAll();
検索が成功すると、その条件に合ったデータだけが返ってきます。もし条件に合うものがなければ、空っぽの結果が返ってきます。このように、モデルはただデータを渡すだけでなく、私たちの要望に合わせて賢くデータをフィルタリングしてくれる頼もしい相棒なのです。プログラミング未経験の方は、まずこの「探す」という操作をマスターすることを目指しましょう。
6. データを新しく保存・登録する手順
次に、新しいデータをデータベースに保存する方法を学びましょう。これを「挿入(インサート)」と呼びます。例えば、ブログの投稿フォームに書かれた内容を、永久に保存するためにデータベースへ書き込む作業です。モデルを使えば、配列(データのセット)を作って渡すだけで保存が完了します。
保存の際には、先ほどモデルの定義で書いた $allowedFields(許可された項目)が重要になります。ここに登録されていない項目は、安全のために無視される仕組みになっています。これは「知らない人が勝手に変なデータを入れないようにする」ためのセキュリティ対策でもあります。
$blogModel = new \App\Models\BlogModel();
// 保存したいデータを準備します
$newData = [
'title' => '新しく書いた記事',
'content' => '今日はモデルの勉強をしました。',
'author' => '佐藤'
];
// save()命令でデータベースに書き込みます
$blogModel->save($newData);
実行した結果、何もエラーが出なければ、データベースに新しい行が追加されています。これであなたのブログに新しい記事が誕生したことになります。パソコン初心者の方は、=> という記号(アロー演算子)に戸惑うかもしれませんが、これは「左側のラベルに右側の内容を入れる」という意味だと考えてください。この書き方に慣れると、複雑な情報もスッキリと整理して扱えるようになります。
7. 既存のデータを更新して書き換える方法
一度保存したデータを後から書き換えたいこともありますよね。「誤字を修正したい」「内容を最新にしたい」といった場合です。これを「更新(アップデート)」と呼びます。CodeIgniterのモデルでは、先ほどの save() 命令をそのまま使うことができます。id(背番号)を指定して save() を呼ぶと、モデルは「あ、これは新しいデータじゃなくて、すでにあるデータの書き換えだな」と自動的に判断してくれます。
具体的なコードは以下のようになります。非常にシンプルですよね。
$blogModel = new \App\Models\BlogModel();
// すでにある3番の記事のタイトルを変更したい場合
$updateData = [
'id' => 3,
'title' => '【修正済み】モデルの基本'
];
// idが含まれているので、上書き保存されます
$blogModel->save($updateData);
もし id を入れ忘れると、新しいデータとして保存されてしまうので注意が必要です。更新のポイントは「どのデータを、どう変えるか」を明確に伝えることです。これができるようになると、ユーザーのプロフィール変更機能や、記事の編集機能などが作れるようになります。一歩ずつ、できることが増えていく実感を楽しみましょう。
8. データを削除する時の注意点と方法
最後に、不要になったデータを削除する方法です。これを「削除(デリート)」と呼びます。削除は非常に強力な操作で、一度実行すると元に戻すのが難しいため、慎重に行う必要があります。モデルには delete() という命令が用意されています。削除したいデータの id を指定するだけで、データベースから消し去ることができます。
プログラミング未経験の方は、まず「消す前に本当に消していいか確認する」というクセをつけましょう。プログラムは命令された通りに忠実に動くので、「間違えて消しちゃった!」というミスもそのまま実行してしまいます。
$blogModel = new \App\Models\BlogModel();
// idが5番のデータを完全に削除します
$blogModel->delete(5);
このように、モデルクラスを使うことで「取得・検索・保存・更新・削除」という、Webアプリケーションに必要な基本操作がすべて簡単に行えるようになります。これらの頭文字をとって「CRUD(クラッド)」と呼んだりもします。モデルの作り方と使い方の基本をマスターすれば、あなたはもう立派なプログラマーの仲間入りです。まずは自分でモデルを作って、データを動かしてみることから始めてみてくださいね。
まとめ
今回はCodeIgniterにおけるモデル作成の基本から、データベース操作の流れまでを体系的に学びました。モデルとは、データベースとのやり取りを担当する重要な役割を持つクラスであり、Webアプリケーション開発において欠かすことのできない存在です。特にCodeIgniterでは、モデルを活用することでデータの取得、検索、登録、更新、削除といった基本操作を整理された形で実装できます。これは保守性の高い設計を実現するためにも非常に重要です。
まず理解すべき点は、モデルを利用することでデータベース処理をコントローラーから分離できるという点です。役割分担を明確にすることで、プログラム全体が見やすくなり、修正や拡張が容易になります。例えばブログ機能を作成する場合、記事一覧取得、記事詳細表示、新規投稿、編集、削除といった処理をそれぞれモデル経由で実装することで、構造が整理されます。これは大規模なシステム開発でも基本となる考え方です。
モデルクラスの作成では、正しいディレクトリにファイルを配置し、命名規則を守ることが重要です。さらに、テーブル名や主キー、許可するフィールドを明確に定義することで、安全で安定したデータ操作が可能になります。特に許可フィールドの設定は、不要なデータ書き込みを防ぐセキュリティ対策として重要です。
以下は基本的なモデルの例です。実際の開発でもこの構造を基礎として応用していきます。
namespace App\Models;
use CodeIgniter\Model;
class BlogModel extends Model
{
protected $table = 'posts';
protected $primaryKey = 'id';
protected $allowedFields = ['title', 'content', 'author'];
}
このようにシンプルな定義だけで、findやfindAll、where、save、deleteなどの便利な機能を利用できます。データ取得ではfindAllを使うことで全件取得が可能です。条件指定を行う場合はwhereを組み合わせることで柔軟な検索ができます。これにより、ユーザーの要望に応じたデータ表示が実現できます。
データ登録ではsaveメソッドを使用します。新規データの場合は自動的に挿入処理が行われ、既存データの主キーを含めた場合は更新処理として動作します。この仕組みにより、登録と更新を統一的に扱えるため、コードが簡潔になります。
削除処理ではdeleteメソッドを使用します。特定の主キーを指定することで、該当データを安全に削除できます。ただし削除操作は慎重に行う必要があり、実装時には確認処理を追加することが推奨されます。
これらの基本操作をまとめると、データベース操作の基本概念である取得、作成、更新、削除を一通り理解したことになります。いわゆる基本的なデータ操作の流れをモデルを通して実装できるようになったことは、Webアプリケーション開発において大きな前進です。
また、モデルを適切に設計することで、コードの再利用性が高まり、複数の画面や機能から同じ処理を呼び出すことができます。これにより開発効率が向上し、品質の安定にもつながります。特にチーム開発では、モデルの役割を明確にすることが重要です。
さらに、データベースとの連携を理解することで、今後フォーム入力処理やバリデーション、認証機能などとの組み合わせもスムーズに学習できます。モデルはその中心となる存在です。基礎をしっかり理解しておくことで、応用機能の習得も容易になります。
今回の学習を通して、CodeIgniterにおけるモデルの作成方法とデータベース操作の基本構造を理解できました。実際に手を動かしながらコードを書き、動作確認を繰り返すことで、知識はより確かなものになります。モデルの概念を正しく理解し、実装できるようになることが、安定したWebアプリケーション開発への第一歩です。
生徒
「モデルを使うことでデータベース操作がとても整理されることが分かりました。取得や保存が簡単にできて驚きました。」
先生
「その通りです。モデルはデータベース処理を担当する大切な役割を持っています。役割分担を意識することが重要です。」
生徒
「findやsaveを使うだけでデータ操作ができるのは便利ですね。SQLを直接書かなくてもよいのが安心です。」
先生
「はい。さらにwhereを使えば条件検索もできます。削除や更新も含めて、基本操作を一通り理解できましたね。」
生徒
「はい。これでブログ機能やユーザー管理機能なども作れそうです。モデルの重要性がよく分かりました。」
先生
「とても良い理解です。基礎をしっかり身につけることで、より高度な機能にも応用できます。これからも実践を重ねていきましょう。」