前回、簡単なビューとコントローラーを作ったので今回はモデルを作ってみたいと思います。
テーブル名と作成するモデルファイル名はCakePHPの命名規則がありますので、基本的にはそのルールにしたがって作成していきます。
まずは、テーブルの作成を行います。
テーブルの作成
今回テスト用にCakePHPの認証ドキュメント内で使われているusersテーブルを使いたいと思います。
シンプルな認証と承認のアプリケーション
[sql]
CREATE TABLE users (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50),
password VARCHAR(50),
role VARCHAR(20),
created DATETIME DEFAULT NULL,
modified DATETIME DEFAULT NULL
);
[/sql]
XAMPPをお使いのかたはphpMyAdmin等でSQLを実行してください。
動作確認用に2件ほどINSERTしておきます。
[sql]
INSERT INTO users (
username,
password,
role,
created
) VALUES('admin', 'admin', 'admin', NOW());
INSERT INTO users (
username,
password,
role,
created
) VALUES('user', 'user', 'user', NOW());
[/sql]
モデルの作成
次にモデルを作成していきます。
最初に作成するモデルのファイル名は
User.php
となります。テーブル名はusersと複数系ですが対応するモデルのファイル名はUserと単数形になることに注意が必要です。
cake/app/Model/User.php
として作成します。
[php]
<?php
class User extends AppModel {
}
[/php]
コントローラーの作成
画面上から操作できるようにコントローラーを作成します。
cake/app/Controller/UsersController.php
として作成します。モデルとは違い、コントローラーのファイル名はUsersと複数系になることに注意。
[php]
<?php
class UsersController extends AppController {
public function index() {
$this->set('User', $this->User->find('all'));
}
}
[/php]
ビューの作成
データベースの内容を表示するビューを作成します。
cake/app/View/Users/index.ctp
として作成します。
[php]
<?php debug($User); ?>
[/php]
レコードの内容をデバッグメソッドを使って表示します。
動作確認
この状態でhttp://localhost/cake/users/にアクセスすると以下の様な画面が表示されます。
パスワードフィールドは自動的に****でマスクされるみたいです。
結びに
findメソッドについては、もちろん検索条件などを指定することができて簡単なSQL文であればSQL文を書くことなくデータを取得できるのは非常に簡単ですね。
しかしながら複雑なSQL文、例えばリレーションシップを設定したりするものに関してはSQL文で書いたほうがよいのか迷う部分ではあります。
この辺りは作成するアプリケーションを勘定して判断するのがよいのではないかと思います。