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

}
?>