作成、読み出し、更新、そして削除 (CRUD) は永続性ストレージにおける4つの基本操作です。ブログアプリケーションでは、記事とコメントに対して CRUD 操作を実装することが主なタスクになります。このセクションでは yiic
ツールを用いてこのタスクを完了します。 このプロセスはまた スキャフォールディング として知られています。
コマンドプロンプトを開き、以下のコマンドを実行します。
% /wwwroot/yii/framework/yiic shell /wwwroot/blog/index.php Yii Interactive Tool v1.0 Please type 'help' for help. Type 'exit' to quit. >> model User ...... >> model Post ...... >> model Tag ...... >> model Comment ...... >> crud Post ...... >> crud Comment ...... >> exit
情報: PHPのインストール状態によっては、コマンドライン(CLI)の PHP コマンドに異なった
php.ini
を使っていることがあります。 その結果、yiic コマンドを実行する際に、"YiiBase::include(PDO.php): failed to open stream..." もしくは "...could not find driver"といったエラーが発生することがあります。 その場合、以下のようにしてCLI PHPの設定を再チェックしてください。php -r "phpinfo();"このコマンドの結果は、使用されている
php.ini
を表示します。 もし異なったphp.ini
が使われている場合、以下のコマンドを実行することで正しいphp.ini
を指定することができます。php -c php.ini /wwwroot/yii/framework/yiic.php shell /wwwroot/blog/index.php
上記コマンドによって二つのタスクが達成されます。まず一つ目は、 model
コマンドによって、 各データベーステーブルに対応する model クラスファイルが生成されます。 二つ目に、 crud
コマンドによって、 Post
モデルと Comment
モデルの CRUD 操作に必要なコードが生成されます。
以下の URL にアクセスすることで生成されたコードをテストすることができます。
http://www.example.com/blog/index.php?r=post http://www.example.com/blog/index.php?r=comment
自動生成されたコードによる記事とコメントの機能は、それぞれ完全に独立していることに注意してください。 また、新しい記事やコメントを作る際に、 authId
や createTime
といった情報を入力する必要があります。 これらの情報は実際のアプリケーションではプログラムによって設定するべきです。 しかし心配することはありません。次のマイルストーンまでにこれらの問題を解決します。 今のところは、このプロトタイプがほぼすべての機能をそなえていることに、それなりに満足すべきでしょう。
次のマイルストーンへの準備として、生成されたファイルを少し詳しく見てみましょう。 すべてのファイルはr /wwwroot/blog/protected
以下にあります。 説明のため、ファイルをモデルファイル、コントローラファイル、ビューファイルに分類します。
モデルファイル:
models/User.php
ファイルは user
クラスを含み、CActiveRecord を継承しています。 このクラスは User
テーブルにアクセスするのに使われます。models/Post.php
ファイルは Post
クラスを含み、CActiveRecord を継承しています。 このクラスは Post
テーブルにアクセスするのに使われます。models/Tag.php
ファイルは Tag
クラスを含み、CActiveRecord を継承しています。 このクラスは Tag
テーブルにアクセスするのに使われます。models/Comment.php
ファイルは Comment
クラスを含み、CActiveRecord を継承しています。 このクラスは Comment
テーブルにアクセスするのに使われます。コントローラファイル:
controllers/PostController.php
ファイルは PostController
クラスを含みます。 このコントローラは記事の CRUD 操作を受け持ちます。controllers/CommentController.php
ファイルは CommentController
クラスを含みます。 このコントローラはコメントの CRUD 操作を受け持ちます。ビューファイル:
views/post/create.php
ファイルは新しい記事を作る HTML フォームのビューファイルです。views/post/update.php
ファイルは記事の更新を行う HTML フォームのビューファイルです。views/post/show.php
ファイルは記事の詳細情報を表示するビューファイルです。views/post/list.php
ファイルは記事のリストを表示するビューファイルです。views/post/admin.php
ファイルは管理コマンドの際に表形式で記事を表示するビューファイルです。views/post/_form.php
ファイルは記事情報を集める HTML フォームを表示する部分ビューファイルです。 このファイルは create
ビューと update
ビューに埋め込まれます。上記ファイルがどう使われるかをよりよく理解するために、ブログアプリケーションで記事の一覧が表示される場合のワークフローを示します。
1. ウェブサーバにより エントリスクリプト が実行され、アプリケーションインスタンスが作成・初期化された後、リクエストを処理します。
2. アプリケーションは PostController
のインスタンスを作成し、実行します。
3. PostController
インスタンスは要求された list
アクションを、 actionList()
メソッドを呼ぶことで実行します。
4. actionList()
メソッドはデータベースに問い合わせを行い、最近の記事リストを取り出します。
5. actionList()
メソッドは、記事データを list
ビューで描画します。
Signup or Login in order to comment.