私は個人的なプロジェクトを開発中です。
「ショー」と「エピソード」の 2 つのモデルがあります。私は1つのコントローラー「Ops」を持っています。
モデルを表示:
class Show extends AppModel
{
var $name = 'Show';
var $hasMany = array(
'Episode' => array(
'className' => 'Episode',
'foreignKey' => 'show_id'
)
);
}
エピソード モデル:
class Episode extends AppModel
{
var $name = 'Episode';
var $belongsTo = array(
'Show' => array(
'className' => 'Show',
'foreignKey' => 'show_id'
)
);
}
オペレーション コントローラ:
class OpsController extends AppController
{
var $name = 'Ops';
var $uses = array('Show','Episode');
function index()
{
$episodes = $this->Episode->find('all',array(
'limit' => 10,
'order' => array('Episode.first_aired' => 'DESC'),
)
);
debug($this->Episode);
debug($episodes);
}
}
Ops コントローラーを実行すると、必要な「エピソード」レコードが取得されますが、「belongsTo」構成の「show_id」に基づいて関連する「ショー」レコードが取得されません。リクエストがまだ続いているモデルクラスを意図的に壊すことができるので、モデルをまったく参照していないようです。
多くのチェック、調査、およびテストを行った後、find() 要求の前に Ops コントローラーに以下を追加することで機能させることができました。
$this->Episode = ClassRegistry::init('Episode');
$this->Episode->bindModel(
array('belongsTo' => array(
'Show' => array(
'className' => 'Show'
)
)
)
);
これが機能している間、モデルが適切に呼び出されない理由を知りたいです。どんな助けでも大歓迎です。ありがとう!