back

複数Modelの連携 (4/6)

■一対多対応の「hasMany」

このhasOneは、常に1つのデータに別のModelの1つのデータが関連付けられます。同時に複数の項目を関連付けることはできません。しかし、1つのデータに、別のModelの多数のデータが関連付けられることはよくあります。

例えば、今回の例では、2つのモデルの役割を以下のように考えるとしましょう。

MySampleData――各ユーザーの情報の管理
GuestBook――投稿したメッセージの管理

GuestBookには、投稿した人の情報をMySampleDataから引っ張ってきて設定するわけですね。そうすると、1つのMySampleDataにいくつものGuestBookのデータが関連付けられることになります。それぞれのユーザーは、いくつもメッセージを投稿をできるのですから。

こうした1つのデータに多数のでーたが関連付けられる状態を「一対多対応」といいます。これを実現するのが「hasMany」という設定です。下のリスト欄に、MySampleDataの修正例を挙げておきました。hasManyは、Modelクラスに、
public $hasMany = "関連するModel名";
という形で変数を用意することで設定します。先ほどと同じようにMySampleDataの項目の「View」ボタンを押して内容を表示してみてください。関連するGuestBookが複数あった場合、それらがすべて表示されます。


(by. SYODA-Tuyano.)

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

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

※MySampleData.php

class MySampleData extends AppModel {
  public $hasMany = "GuestBook";  
}




   

記事のリストに戻る



PC Site G+ mail