複数Modelの連携 (3/6)
作成:2011-12-19 08:01
更新:2011-12-19 08:01
更新:2011-12-19 08:01
■一対一対応の「hasOne」
では、Modelの連携を行なってみましょう。まずはGuestBook……ではなく、MySampleDataのほうを開いてください。そしてクラスを下に掲載したように書き換えてみましょう(バリデーションなどはそのまま残しておいてかまいません)。
このMySampleDataも、やはりScaffoldを利用することにしましょう。コントローラーを修正し、アクセスしてみてください。Scaffoldを使うと、データの一覧が表示され、その内容の表示などを行う「View」ボタンが表示されます。この「View」を使って各項目の内容を表示させてみましょう。
GuestBook側で、そのデータに関連付けられたデータが用意されていた場合、MySampleDataの内容の下に、関連するGuestBookのデータが表示されます。MySampleDataとGuestBookが関連付けられて認識されていることがわかるでしょう。(ただし、現段階では、表示されるのは関連付けられたデータ1つのみです。複数のデータが関連付けられている場合は、最初の1つだけが取り出されます)
今回、Modelクラスに記述した「$hasOne」という変数は、一般に「一対一対応」と呼ばれる関連付けを指定するものです。これは「このModelのデータに、関連する別のModelのデータが1つある」というものです。ここでは、
このMySampleDataも、やはりScaffoldを利用することにしましょう。コントローラーを修正し、アクセスしてみてください。Scaffoldを使うと、データの一覧が表示され、その内容の表示などを行う「View」ボタンが表示されます。この「View」を使って各項目の内容を表示させてみましょう。
GuestBook側で、そのデータに関連付けられたデータが用意されていた場合、MySampleDataの内容の下に、関連するGuestBookのデータが表示されます。MySampleDataとGuestBookが関連付けられて認識されていることがわかるでしょう。(ただし、現段階では、表示されるのは関連付けられたデータ1つのみです。複数のデータが関連付けられている場合は、最初の1つだけが取り出されます)
今回、Modelクラスに記述した「$hasOne」という変数は、一般に「一対一対応」と呼ばれる関連付けを指定するものです。これは「このModelのデータに、関連する別のModelのデータが1つある」というものです。ここでは、
public $hasOne = "GuestBook";このように記述されていました。ということは、このMySampleDataの各データには、GuestBookのデータ1つが結び付けられている、ということになります。関連するデータの情報は、もちろんGuestBookのmy_sample_data_idに関連するMySampleDataのID番号を保管して設定されます。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
1 2 3 4 5 6 7 8 9 10 11 | ※MySampleDatasController.php class MySampleDatasController extends AppController { public $scaffold ; } ※MySampleData.php class MySampleData extends AppModel { public $hasOne = "GuestBook" ; } |
※関連コンテンツ
「初心者のためのCakePHP2 プログラミング入門」に戻る