データベース
mySQLを利用する。 「app」「config」にあるdatabase.phpをまず修正します。
[cc lang="php"] class DATABASE_CONFIG {
var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'port' => '', 'login' => '', 'password' => '', 'database' => 'mydata', 'prefix' => '', 'schema'=>'', 'encoding'=>'UTF-8' );
var $test = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'user', 'password' => 'password', 'database' => 'test_database_name', 'prefix' => '', ); } [/cc] port,login,passwordはサーバー任意のモノを入力してください。
まずはモデルを作成します。 「app」「models」のフォルダの中にファイルを作ります。
class Board extends AppModel{
var $name='Board';
}
?>
[/cc]
作成するファイル名は使用するデータベースのテーブル名と同じものにします。
次にコントローラ [cc lang="php"] <?php
class BoardsController extends AppController{
public $name = 'Boards';
function index(){
$data = $this->Board->find('all');
$this -> set('data',$data);
}
} ?> [/cc]
モデルのメソッドを呼び出し($name)、ビュー渡しています。(set) モデルはコントローラの中ではメンバ変数として利用することができます。今回は「$this->Board」の形で利用しています。「find」はモデルクラスのメソッドになります。
最後にビューです。 [cc lang="php"]
送信フォームサンプル
[/cc]
コントローラから受け取った「$data」を使っています。 HTMLヘルパーを使っています。
おまけ
scaffoldを使えば、モデルとビューなしでデータベース管理するためのシステムを自動生成してくれます。 [cc lang="php"] <?php
class BoardsController extends AppController{
public $name = 'Boards';
public $scaffold;
} ?> [/cc]
データベースの操作
レコードの追加
class BoardsController extends AppController{
public $name = 'Boards';
function index(){
$data = $this->Board->find('all');
$this->set('data',$data);
}
function addRecord(){
if(!empty($this->data)){
$this->Board->save($this->data);
}
$this->redirect('.');
}
} ?> [/cc]
echo $form->create(null,array('type'=>'posr','action'=>'./addRecord')); echo $form->text("Board.name"); echo $form->text("Board.title"); echo $form->textarea("Board.content"); echo $form->submit("送信"); echo $form->end();
?>
[/cc]
レコードの検索
class BoardsController extends AppController{
public $name = 'Boards';
function index(){
$data=null;
if(!empty($this->data)){
$data = $this->Board->find('all',array('conditions' =>
array('Board.id' => $this->data['Board']['id'])));
}else{
$data=$this->Board->find('all');
}
$this->set('data',$data);
}
}
?> [/cc]
大きくはコントローラーが変わっています。 find(第一引数、第二引数)
- 第一引数:all,first,list,countなど。
- 第二引数:連想配列でまとめたもの。今回はconditionsは条件を設定しています。入力されたBoard.idに対して等しい値をdata['Board']['id']からの抽出しています。