The Cookbook の CakePHP ブログチュートリアルを実践してみる(4)
10.1.6 Postモデルの作成
Bake を利用してコードの自動生成をしてみます。 Bake の本体は cake/console 内にあります。
実行権限が無いと Bake を実行できないので、chmod コマンドで実行権限をつけてから Bake を実行します。
ターミナルから以下のコマンドを入力します。
$ cd /Users/ユーザ名/Sites/eclipse_workspace/cake_blog_tutorial/cake/console $ chmod 755 cake $ ./cake bake
以下の画面が表示されます。
Welcome to CakePHP v1.2.0.7962 Console --------------------------------------------------------------- App : app Path: /Users/*****/Sites/eclipse_workspace/cake_blog_tutorial/app --------------------------------------------------------------- Interactive Bake Shell --------------------------------------------------------------- [D]atabase Configuration [M]odel [V]iew [C]ontroller [P]roject [Q]uit What would you like to Bake? (D/M/V/C/P/Q) > M
Database Configuration はデータベースの接続情報の設定。 Model はモデルクラス。 View はビューファイル。 Controller はコントローラークラス。 Project はプロジェクトを、それぞれ生成します。 Quit は Bake を終了します。
今回はモデルクラスを生成したいので M を入力します。
以下の画面が表示されます。
--------------------------------------------------------------- Bake Model Path: /Users/*****/Sites/eclipse_workspace/cake_blog_tutorial/app/models/ --------------------------------------------------------------- Use Database Config: (default/test) [default] > default
database.php に設定したデータベースの接続情報のうち、どれを利用するかを入力します。
今回は default を利用するので default を入力 もしくは 何も入力しないで return キーを押します。
以下の画面が表示されます。
Possible Models based on your current database: 1. Post Enter a number from the list above, type in the name of another model, or 'q' to exit [q] > 1
現在のデータベースから選択できるモデルが一覧表示されます。
今回は posts テーブルから生成できる Post モデルのみです。
1 を入力します。
以下の画面が表示されます。
Would you like to supply validation criteria for the fields in your model? (y/n) [y] > y
バリデーションの定義をするかを聞かれています。
バリデーションの設定をするために y を入力 もしくは 何も入力しないで return キーを押します。
以下の画面が表示されます。
Field: id Type: integer --------------------------------------------------------------- Please select one of the following validation options: --------------------------------------------------------------- 1 - alphaNumeric 2 - between 3 - blank 4 - boolean 5 - cc 6 - comparison 7 - custom 8 - date 9 - decimal 10 - email 11 - equalTo 12 - extension 13 - file 14 - inList 15 - ip 16 - maxLength 17 - minLength 18 - money 19 - multiple 20 - notEmpty 21 - numeric 22 - phone 23 - postal 24 - range 25 - ssn 26 - time 27 - url 28 - userDefined 29 - Do not do any validation on this field. ... or enter in a valid regex validation string. [29] > 29
id フィールドに対してどのバリデーションを適用するかを聞かれています。
id フィールドにはバリデーションを設定したくないので 29 を入力します。
残りのフィールドに対してもバリデーションの設定がつづくので、title と body には 20 を入力し、必須入力にします。 created と modified には id 同様、バリデーションの必要は無いので 29 を入力します。
以下の画面が表示されます。
Would you like to define model associations (hasMany, hasOne, belongsTo, etc.)? (y/n) [y] > n
モデルのアソシエーションを定義するか聞かれています。
今回は 1 テーブルしかないので、アソシエーションの必要はありません。
n を入力します。
以下の画面が表示されます。
---------------------------------------------------------------
The following Model will be created:
---------------------------------------------------------------
Name: Post
Validation: Array
(
[title] => notempty
[body] => notempty
)
Associations:
---------------------------------------------------------------
Look okay? (y/n)
[y] > y今まで設定したきた項目の確認です。
問題は無いので y を入力します。
以下の画面が表示されます。
Baking model class for Post... Creating file /Users/*****/Sites/eclipse_workspace/cake_blog_tutorial/app/models/post.php Wrote /Users/*****/Sites/eclipse_workspace/cake_blog_tutorial/app/models/post.php Cake test suite not installed. Do you want to bake unit test files anyway? (y/n) [y] > n
ユニットテスト用のファイルを生成するかを聞いかれています。
今回は ユニットテスト用のファイルは生成しません。
n を入力します。
もとの画面に戻ってくるので Q でBake をぬけます
生成されたファイルは以下になります。
app/models/post.php
<?php class Post extends AppModel { var $name = 'Post'; var $validate = array( 'title' => array('notempty'), 'body' => array('notempty') ); } ?>