今回は、会員登録情報を格納するモデルを作成について記します。
処理の流れ
今回は、model部分の処理を作成します。
以前の章で記しました、コントローラやサービスと違って親クラスを持ちません。そのため内部に処理を記述する必要もないです。
この画像の赤く囲ってある部分が本記事で記す内容です。
必要なファイルの作成
今回作成するファイルのみ記しています。
※下記のみだと正常に実行されないのでシリーズの過去記事をご覧ください
sns_training
└── app
└── models
├── inputModels
│ └── A00001InputModel.php
└── outputModels
└── A00001OutputModel.php
今回は、モデルクラスの作成です。モデルのファイル名は、「AXXXXX」のようにしています。というのも、役割ごとのモデル名で作ると名前の規則性が失われます。
そして、モデルは基本的、一つのAPIに対してinput、outputの二つのモデルが紐づきます。
そのため、API名と統一した方が分かりやすいのです。
例えば、「A00001」は、一致するユーザID数を返すというAPIとします。
このリクエストには、ユーザIDが必要です。そのため、A00001InputModelには、ユーザIDを。A00001OutputModelには、一致するユーザID数が入るようにします。
では、ファイルに記述していきます。
A00001InputModel.php
今回は、A00001というAPIに紐づくモデルの作成です。
このAPIでは、一致するユーザID数を返すというAPIとします。
仮に、A00001のsqlは
select count(usr.user_id) as COUNT from users usr where usr.user_id = :USER_ID and usr.available = 1;
とします。
必要となるのがuser_id(ユーザID)。
会員登録画面を作成してみる。PHPでSNSを作成してみる#09を見てみるとビューから送られる値は、userId(ユーザID)、userName(ユーザ名)、userPassWord(ユーザパスワード)ということが分かります。
<?php namespace App\Models\InputModels; class A00001InputModel { public $USER_ID; } ?>
A00001OutputModel.php
inputModelとフォーマットは同じように記します。
<?php namespace App\Models\OutputModels; class A00001OutputModel { public $COUNT; } ?>
戻り値はユーザIDが一致する数なので、COUNTとします。
今回は、以上となります。
おわりに
今回は、Modelクラスを作成しました。
Modelは、基本的に形は変わりません。
次回は、前回作成したサービスクラスとコントローラクラスの紐付けと、
実際にモデルにデータを格納するところを記します。
コメント