我正在开发一个个人项目。
我有两个模型“Show”和“Episode”。我有一个控制器“操作”。
显示型号:
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 控制器时,我得到了我想要的“Episode”记录,但没有得到基于“belongsTo”配置中的“show_id”的关联“Show”记录。看来它根本没有引用模型,因为我可以故意破坏模型类而请求仍在继续。
经过大量检查、研究和测试后,我能够通过在 find() 请求之前将以下内容添加到 Ops 控制器中来使其工作:
$this->Episode = ClassRegistry::init('Episode');
$this->Episode->bindModel(
array('belongsTo' => array(
'Show' => array(
'className' => 'Show'
)
)
)
);
现在虽然这可行,但我仍然想知道为什么我的模型没有被正确调用。非常感激任何的帮助。谢谢!