複数モデルを連携する (1/6)
作成:2010-02-20 17:05
更新:2011-12-22 17:24
更新:2011-12-22 17:24
■Contentdataモデルの作成
データベースというのは、一般に「1種類のデータを扱うだけ」ということはあまりありません、何種類ものデータを保管し、それらを連携して処理していくことのほうが多いでしょう。
たとえば簡単なパーソナルデータの管理を行う場合、住所録のようなデータもあれば、スケジュール帳のようなデータもあるでしょう。そうして複数のデータを扱うようになれば、「スケジュールに、投稿したユーザー情報も保管して、その人の住所録も表示されるようにしたい」というように、それらを連携して扱いたい、と思うのは自然な流れでしょう。CakePHPで、同様に「複数のモデルを連携して扱う」という場合について考えてみましょう。
まずは、前回まで使っていた「Mydata」の他に、もう1つモデルを用意することにしましょう。SQLiteで、Mydataが保管してあるデータベースファイルを開き、新たに「Contentdatas」というテーブルを作成します。これは簡単なメモ書きのデータです。以下のような形のものにしましょう。
Contentdatasテーブルの内容
id――個々のデータに割り当てるID番号。(プライマリキー)
mydata_id――関連するMydataのデータのID番号を保管するもの。
date――日時の情報を保管するもの。
title――タイトルのテキスト。
content――内容(テキスト)。
下のリストを参考に、SQLiteでテーブルを作成してください。そして、「models」内に、「contentdata.php」というファイルを新たに作成し、やはり下のリストを参考にモデルを作成しましょう。
たとえば簡単なパーソナルデータの管理を行う場合、住所録のようなデータもあれば、スケジュール帳のようなデータもあるでしょう。そうして複数のデータを扱うようになれば、「スケジュールに、投稿したユーザー情報も保管して、その人の住所録も表示されるようにしたい」というように、それらを連携して扱いたい、と思うのは自然な流れでしょう。CakePHPで、同様に「複数のモデルを連携して扱う」という場合について考えてみましょう。
まずは、前回まで使っていた「Mydata」の他に、もう1つモデルを用意することにしましょう。SQLiteで、Mydataが保管してあるデータベースファイルを開き、新たに「Contentdatas」というテーブルを作成します。これは簡単なメモ書きのデータです。以下のような形のものにしましょう。
Contentdatasテーブルの内容
id――個々のデータに割り当てるID番号。(プライマリキー)
mydata_id――関連するMydataのデータのID番号を保管するもの。
date――日時の情報を保管するもの。
title――タイトルのテキスト。
content――内容(テキスト)。
下のリストを参考に、SQLiteでテーブルを作成してください。そして、「models」内に、「contentdata.php」というファイルを新たに作成し、やはり下のリストを参考にモデルを作成しましょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※テーブル作成のSQL文 create table contentdatas ( id integer not null primary key, mydata_id int, date datetime, title varchar(255), content text); ※contentdata.phpのソースコード <?php class Contentdata extends AppModel { // まだ何もない }
※関連コンテンツ
「初心者のためのCakePHP 1.3 プログラミング入門」に戻る