チェ・ゲバムラの日記

脱犬の道を目指す男のブログ

【CakePHP2.x系+Mysql】Modelについて(SQL文のコピペ用、複数テーブル結合など)

Modelでは
・データ操作
・バリデーション
・アソシエーション(複数モデル操作)
が可能。
データ操作はfind,saveなど
アソシエーションは$belongsTo,$hasManyなどがよく使われてるそう。

Mysql操作

めちゃくちゃ使うのにググってもシンプルなの書いてあるようで例が書いてなかったりする。
のでメモ。

超手抜き。
構文とかじゃなくてとにかく試して見たい、動かしたいだけならこれでいい。

テーブル作成

create table notes(
id int not null auto_increment,
task_id int not null,
body tinytext not null,
created datetime not null,
modified datetime not null,
primary key(id)
)engine = MYISAM;


レコード挿入

insert into topics(id,title,body,category_id,created,modified)
value(1,'新しいパソコン','ほしいですーーーー',1,'2012-02-02 00:00:00','2012-02-02 00:00:00');


複数テーブルの結合($belongsTo)

◆tasksテーブル
id

◆notesテーブル
id
task_id

上記2つのテーブルがある場合、(カラム名も大事)

◆ /app/Model/Note.php
public $belongsTo = array('Task');
と書いておくとnotesテーブルの親がtasksとなる。

つまりTaskコントローラでfind('all')すると自動的にnotesも結合されて、
task.id = note.task_id みたいな感じになってくれて超便利。


複数テーブルの結合($hasMany)

親から子を呼び出すイメージ
上記のbelongsToの逆。

テーブルは同じで、
◆/app/Model/Task.php
public $hasMany = array('Note');
を記載。

◆/appView/Tasks/index.ctp