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

複数モデルを連携する (5/6)

作成:2010-02-20 18:04
更新:2010-05-10 20:38

■belongsToによる連携

今度は、「Contentdata」側からの連携を考えてみましょう。Contentdataには、関連するMydataのIDが保管されています。この情報を元に、このContentdataに設定されているMydataを取り出し表示してみましょう。

では、「Contentdata」モデルクラス、「ContentdatasController」クラスのindexメソッド、そして「views」内の「contentdatas」フォルダ内に用意する「index.ctp」ファイルを、それぞれ下のリストのように修正しましょう。そして、http://localhost/cakesample/contentdatasにアクセスすると、各データに、Contentdataと、それに関連するMydataがセットで表示されるようになります。

ここで用いているのは「belongsTo」というものです。これは「hasOneの逆バージョン」といった働きをします。hasOneではMydata側から、関連するContentdataを取り出し表示しましたが、belongsToでは、Contentdata側から、関連付けているMydataを取り出す、というわけです。

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

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

●プログラム・リスト●

※Contentdataの修正

class Contentdata extends AppModel {

	public $belongsTo = "Mydata";
	
}


※ContentdatasControllerクラスのindexメソッド

function index(){
	$this->set("page_title","Sample Add Page");
	$this->set("content_header","Sample Add Page.");
	$this->set("content_footer","copyright SYODA-Tuyano. 2010.");

	$this->set("datas",$this->Contentdata->find("all"));
}


※「views」「contentdatas」のindex.ctp

<h1>データの一覧リスト</h1>
<pre>
<?PHP print_r($datas); ?>
</pre>

※関連コンテンツ

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