私は現在 CakePHP 2.0-RC1 を使用しています。かなり気の利いたので、私は心を包み込むことができない1つの課題に出くわしただけです. モデルのリンクに関するドキュメント (http://www.cakedocs.com/models/associations-linking-models-together.html) を読みましたが、CakePHP に関係テーブルを検索して値を見つけるように指示する方法私は後ですか?説明させてください。
次のようなデータベース構造があります (質問のために簡略化されています。PK = 主キー。FK = 外部キー)
ゲーム
- INT(11) id (PK)
- VARCHAR(100) name
- VARCHAR(40) year
- VARCHAR(10) age
カテゴリー
- INT(11) id (PK)
- VARCHAR(50) name
game_category
- INT(11) game_id (FK)
- INT(11) category_id (FK)
これらの関係の説明:
ゲームには 1 つまたは複数のカテゴリを設定できます。この関係は「game_category」テーブルで定義されます。たとえば、 $this->Game->find('first') を実行するときに、CakePHP がゲームのカテゴリ ID を見つけるだけでなく、カテゴリ名も必要です。私は CakePHP に「game_category テーブルを通過し、category テーブルに進み」、各カテゴリの実際の名前を見つけるように指示する必要があると思います。
私はこれらのモデルを持っています
ゲーム.php
<?php
class Game extends AppModel {
var $useTable = 'game';
var $hasMany = array(
'GameCategory' => array(
'fields' => '*',
'className' => 'GameCategory',
)
);
var $hasOne = 'Review';
}
?>
GameCategory.php
<?php
class GameCategory extends AppModel {
var $useTable = 'game_category';
var $belongsTo = 'category';
var $hasMany = array(
'Category' => array(
'fields' => '*',
'foreignKey' => 'category_id',
'className' => 'Category',
'conditions' => array('GameCategory.game_id' => 'Game.id', 'GameCategory.category_id' => 'Category.id'),
)
);
}
?>
カテゴリ.php
<?php
class Category extends AppModel {
var $useTable = 'category';
var $belongsTo = 'GameCategory';
}
?>
上で定義した関係により、次のような結果が得られます。
Array
(
[Game] => Array
(
[id] => 2
[name] => Colonization
[year] => 1995
[age] => 7
)
[GameCategory] => Array
(
[0] => Array
(
[game_id] => 2
[category_id] => 19
)
[1] => Array
(
[game_id] => 2
[category_id] => 16
)
)
)
あとは、各カテゴリの実際の名前を取得するだけです。これが何らかの意味をなすことを願っています。
どんな助けでも大歓迎です。