libro
www.tuyano.com
初心者のためのCakePHP2 プログラミング入門

複数Modelの連携 (1/6)

作成:2011-12-19 07:54
更新:2011-12-19 07:54

■連動するテーブルを用意する

複数のテーブルを連携して動かすには、まずテーブルを用意して置かなければいけません。今回は、簡単なゲストブックを作成してみましょう。IDとコンテンツと他に1つ項目があるだけの非常にシンプルなものです。

下のリスト欄に、テーブル作成のSQL文を掲載しておきます。ここで用意されている項目は以下のようなものです。

id――プライマリキーとなるものです。これにより各データを識別します。
content――テキストを保管するものです。簡単なメッセージを保管します。
my_sample_data_id――これが今回のポイントとなるものです。関連するmy_sample_data項目のIDを保管します。

今回のテーブルでは、簡単なメッセージの投稿を保管します。投稿データには、その投稿をしたユーザーの情報として、MySampleDataから必要な情報を取り出そう、というわけです。

こうした複数のModelを連携する場合、このmy_sample_data_idのように「関連するModelにあるオブジェクトのプライマリキー」を保管するための項目を用意する必要があります。こうすることで、そのデータと別テーブルの特定のデータを関連付けられるのです。

こうしたModelの関連付けを示す項目は、「関連するテーブル名_id」というように、テーブル名の後に「_id」をつけた名前で用意されます。そしてここに、関連するデータのプライマリキーが設定されるのです。

この関連付けするための項目は、GuestBookには必要ですが、MySampleDataには必要ありません。MySampleDataは、GuestBookのデータがないと表示や編集が行えないわけではないのですから。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

CREATE TABLE IF NOT EXISTS `guest_books` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `my_sample_data_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
※関連コンテンツ

「初心者のためのCakePHP2 プログラミング入門」に戻る