CAKEPHP入門3 データベース

   

データベース

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」のフォルダの中にファイルを作ります。

[cc lang=”php”]

class Board extends AppModel{

var $name='Board';


}


?>

[/cc]

作成するファイル名は使用するデータベースのテーブル名と同じものにします。

次にコントローラ
[cc lang=”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”]

送信フォームサンプル



for($i =0 ; $i
echo $html->tableCells($data[$i][‘Board’],array(),array().true);
}

?>
[/cc]

コントローラから受け取った「$data」を使っています。
HTMLヘルパーを使っています。

おまけ

scaffoldを使えば、モデルとビューなしでデータベース管理するためのシステムを自動生成してくれます。
[cc lang=”php”]

class BoardsController extends AppController{

public $name = 'Boards';
public $scaffold;


}
?>
[/cc]

データベースの操作


レコードの追加

コントローラ
[cc lang=”php”]

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]

ビュー
[cc lang=”php”]

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

?>









for($i=0;$i < count($data);$i++){

echo $html->tableCells($data[$i][‘Board’],array(),array(),true);


}

?>

[/cc]

レコードの検索

[cc lang=”php”]

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’]からの抽出しています。


Related Posts Plugin for WordPress, Blogger...