モデルを使ってデータベースにアクセスする (3/7)
作成:2010-02-18 10:19
更新:2010-12-07 14:12
更新:2010-12-07 14:12
■scaffoldでデータベースを使ってみる
では、さっそくこのデータベースを使ってみましょう。SampleControllerクラスを以下のように書き換えてください。見ればわかるように、アクションメソッドは何もありません。ただ、必要なメンバー変数が並んでいるだけです。($layoutは、必ずコメントアウトしてデフォルトのレイアウトに戻しておいてください)
よく見ると「public $scaffold;」という新しいメンバー変数が用意されていることがわかります。これは「scaffold(スカフォールド)」と呼ばれる機能をONにするためのものです。
また、今までnullだった$suesが、「public $uses = "mydatas";」というように値が設定されました。これで、このコントローラーで「mydatas」というモデルを使用するようになります。といっても、まだモデルは作っていません。いませんが、いいのです。ちゃんと動きますから。
では、実際にhttp://localhost/cakesample/sample/にアクセスしてみましょう。何が表示されたでしょうか。これは、かなり驚くはずですよ。データベースを利用する処理など全く何も書いてないのに、mydatasを利用するための機能がすべて用意された画面が現れるからです。
アクセスして表示されるのは、mydatasの一覧リストです。「New Mydatas」というリンクをクリックすれば、新しいデータを作成する画面が現れます。実際にいくつかサンプルでデータを作成してみましょう。そして一覧リストを表示させると、その威力がよくわかってくるはずです。「Action」というところにある「View」「Edit」「Delete」というリンクをクリックすれば、一覧表示されるデータの内容を表示したり、再編集したり削除したりできます。とりあえず、用意されている機能を使って、いろいろデータベースを操作してみてください。
scaffoldという機能は、このように$usesで指定されたモデルとdatabase.phpの設定情報をもとに、データベースを利用するための基本機能をすべて自動的に生成し表示してくれるものなのです。
これは、「データベースのすべての機能が必要ではないけれど、一時的にデータベースを操作しないといけない」というような場合に非常に役立ちます。データベースは、常に全機能が必要となるわけではありません。例えば、「Webアプリでは、必要なデータを取り出して表示するだけ、データの追加や編集削除は管理者しか行わない」ということはけっこう多いでしょう。そんなとき、管理者がたまにデータを修正するためにさまざまな機能を作るのは面倒です。
そんなとき、scaffoldを使ってぱぱっとデータベースアクセスし、すぐに消してしまえばいいのです。あるいは、ログインしたらscaffoldのページに移動するようにしておいてもいいでしょう。こんな具合に、「一般公開する必要のないデータベースアクセス」を素早く作るのにscaffoldは威力を発揮します。
※undefined indexエラーが出たら……
中には、実行したらundefined indexというエラーが出た人もいるかも知れません。先のサンプルをそのまま修正してscaffoldを使おうとすると、こういうエラーに遭遇する場合があります。
scaffoldは、全部自動で作ります!というものですので、既にコントローラーにindexなどのメソッドがあると、うまく動きません。scaffoldを利用する際には、コントローラーのアクションメソッドを一度コメントアウトするか削除してから試してみてください。
よく見ると「public $scaffold;」という新しいメンバー変数が用意されていることがわかります。これは「scaffold(スカフォールド)」と呼ばれる機能をONにするためのものです。
また、今までnullだった$suesが、「public $uses = "mydatas";」というように値が設定されました。これで、このコントローラーで「mydatas」というモデルを使用するようになります。といっても、まだモデルは作っていません。いませんが、いいのです。ちゃんと動きますから。
では、実際にhttp://localhost/cakesample/sample/にアクセスしてみましょう。何が表示されたでしょうか。これは、かなり驚くはずですよ。データベースを利用する処理など全く何も書いてないのに、mydatasを利用するための機能がすべて用意された画面が現れるからです。
アクセスして表示されるのは、mydatasの一覧リストです。「New Mydatas」というリンクをクリックすれば、新しいデータを作成する画面が現れます。実際にいくつかサンプルでデータを作成してみましょう。そして一覧リストを表示させると、その威力がよくわかってくるはずです。「Action」というところにある「View」「Edit」「Delete」というリンクをクリックすれば、一覧表示されるデータの内容を表示したり、再編集したり削除したりできます。とりあえず、用意されている機能を使って、いろいろデータベースを操作してみてください。
scaffoldという機能は、このように$usesで指定されたモデルとdatabase.phpの設定情報をもとに、データベースを利用するための基本機能をすべて自動的に生成し表示してくれるものなのです。
これは、「データベースのすべての機能が必要ではないけれど、一時的にデータベースを操作しないといけない」というような場合に非常に役立ちます。データベースは、常に全機能が必要となるわけではありません。例えば、「Webアプリでは、必要なデータを取り出して表示するだけ、データの追加や編集削除は管理者しか行わない」ということはけっこう多いでしょう。そんなとき、管理者がたまにデータを修正するためにさまざまな機能を作るのは面倒です。
そんなとき、scaffoldを使ってぱぱっとデータベースアクセスし、すぐに消してしまえばいいのです。あるいは、ログインしたらscaffoldのページに移動するようにしておいてもいいでしょう。こんな具合に、「一般公開する必要のないデータベースアクセス」を素早く作るのにscaffoldは威力を発揮します。
※undefined indexエラーが出たら……
中には、実行したらundefined indexというエラーが出た人もいるかも知れません。先のサンプルをそのまま修正してscaffoldを使おうとすると、こういうエラーに遭遇する場合があります。
scaffoldは、全部自動で作ります!というものですので、既にコントローラーにindexなどのメソッドがあると、うまく動きません。scaffoldを利用する際には、コントローラーのアクションメソッドを一度コメントアウトするか削除してから試してみてください。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<?php class SampleController extends AppController { public $name = "Sample"; public $uses = "mydatas"; public $autoRender = true; //public $layout = "sample"; // ※コメントアウトする public $autoLayout = true; public $scaffold; }
※関連コンテンツ
「初心者のためのCakePHP 1.3 プログラミング入門」に戻る