back

複数Modelの連携 (3/6)

■一対一対応の「hasOne」

では、Modelの連携を行なってみましょう。まずはGuestBook……ではなく、MySampleDataのほうを開いてください。そしてクラスを下に掲載したように書き換えてみましょう(バリデーションなどはそのまま残しておいてかまいません)。

このMySampleDataも、やはりScaffoldを利用することにしましょう。コントローラーを修正し、アクセスしてみてください。Scaffoldを使うと、データの一覧が表示され、その内容の表示などを行う「View」ボタンが表示されます。この「View」を使って各項目の内容を表示させてみましょう。

GuestBook側で、そのデータに関連付けられたデータが用意されていた場合、MySampleDataの内容の下に、関連するGuestBookのデータが表示されます。MySampleDataGuestBookが関連付けられて認識されていることがわかるでしょう。(ただし、現段階では、表示されるのは関連付けられたデータ1つのみです。複数のデータが関連付けられている場合は、最初の1つだけが取り出されます)

今回、Modelクラスに記述した「$hasOne」という変数は、一般に「一対一対応」と呼ばれる関連付けを指定するものです。これは「このModelのデータに、関連する別のModelのデータが1つある」というものです。ここでは、
public $hasOne = "GuestBook";
このように記述されていました。ということは、このMySampleDataの各データには、GuestBookのデータ1つが結び付けられている、ということになります。関連するデータの情報は、もちろんGuestBookmy_sample_data_idに関連するMySampleDataID番号を保管して設定されます。



(by. SYODA-Tuyano.)

※リストが表示されない場合

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

※MySampleDatasController.php

class MySampleDatasController extends AppController {
  public $scaffold; 
}


※MySampleData.php
class MySampleData extends AppModel {
  public $hasOne = "GuestBook";
}




   

記事のリストに戻る



PC Site G+ mail