CakePHP1.3.6:HABTM(hasAndBelongsToMany)とscaffold : 中間テーブル

前回、categoriesテーブルとitemsテーブルをHABTMで関係づける際に、category_itemsという中間テーブルを作成した。

調子にのって、このテーブルに以下のモデルを定義して、scaffoldでプログラムをジェネレートしてみる。

モデル

category_item.php
<?php 

class CategoryItem extends AppModel {
	public $name = 'CategoryItem';

	public $belongsTo = array(
		"Category" => array(
			'className' => 'Category',
			'foreignKey' => 'category_id',
		),
		"Item" => array(
			'className' => 'Item',
			'foreignKey' => 'item_id',
		)
	);
}

?>

scaffoldを作ってみる。

category_items_controller.php
<?php
class CategoryItemsController extends AppController{
	public $name = 'CategoryItems';
	
	public $scaffold;	
}
?>

scaffoldを使ってみる。

これまたビックリ。
CategoryItemsにアクセスすると、以下のような画面がでる。きっちり、中間テーブル(category_items)をメンテナンスできるようになっている。

ここで、New Category Itemをクリックすると、以下のように、関係性が直接定義できる。

以下は、New Itemをクリックしたとき。前回、Itemのscaffoldで生成される画面と同じ。

View画面も同様となる。

以下は、New Categoryをクリックしたとき。前回、Categoryのscaffoldで生成される画面と同じ。

表示画面も同様。

すごいもんだなぁ、と感嘆。