PHP

CakePHPで簡単なモデルを作る

前回、簡単なビューとコントローラーを作ったので今回はモデルを作ってみたいと思います。
テーブル名と作成するモデルファイル名はCakePHPの命名規則がありますので、基本的にはそのルールにしたがって作成していきます。
まずは、テーブルの作成を行います。

テーブルの作成

今回テスト用にCakePHPの認証ドキュメント内で使われているusersテーブルを使いたいと思います。
シンプルな認証と承認のアプリケーション

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
);

XAMPPをお使いのかたはphpMyAdmin等でSQLを実行してください。

動作確認用に2件ほどINSERTしておきます。


INSERT INTO users (
username,
password,
role,
created
) VALUES('admin', 'admin', 'admin', NOW());
INSERT INTO users (
username,
password,
role,
created
) VALUES('user', 'user', 'user', NOW());

モデルの作成

次にモデルを作成していきます。
最初に作成するモデルのファイル名は
User.php
となります。テーブル名はusersと複数系ですが対応するモデルのファイル名はUserと単数形になることに注意が必要です。
cake/app/Model/User.php
として作成します。

<?php
class User extends AppModel {
}

コントローラーの作成

画面上から操作できるようにコントローラーを作成します。
cake/app/Controller/UsersController.php
として作成します。モデルとは違い、コントローラーのファイル名はUsersと複数系になることに注意。

<?php
class UsersController extends AppController {
	public function index() {
		$this->set('User', $this->User->find('all'));
	}
}

ビューの作成

データベースの内容を表示するビューを作成します。
cake/app/View/Users/index.ctp
として作成します。

<?php debug($User); ?>

レコードの内容をデバッグメソッドを使って表示します。

動作確認

この状態でhttp://localhost/cake/users/にアクセスすると以下の様な画面が表示されます。
result1
パスワードフィールドは自動的に****でマスクされるみたいです。

結びに

findメソッドについては、もちろん検索条件などを指定することができて簡単なSQL文であればSQL文を書くことなくデータを取得できるのは非常に簡単ですね。
しかしながら複雑なSQL文、例えばリレーションシップを設定したりするものに関してはSQL文で書いたほうがよいのか迷う部分ではあります。
この辺りは作成するアプリケーションを勘定して判断するのがよいのではないかと思います。

-PHP

© 2020 ビー鉄のブログ Powered by AFFINGER5