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

複数Modelの連携 (4/6)

作成:2011-12-19 08:04
更新:2011-12-19 08:04

■一対多対応の「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が複数あった場合、それらがすべて表示されます。

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

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

●プログラム・リスト●

※MySampleData.php

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

※関連コンテンツ

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