我正在开发一个个人项目。CakePHP bindModel工作,预设模型关联不是
我有两个模型'显示'和'插曲'。我有一个控制器'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);
}
}
当运行行动控制器我得到了 '情节' 的记录,像我想要的,但请勿根据'belongsTo'配置中的'show_id'获取关联的'Show'记录。看起来它并没有引用模型,因为我可以故意破坏模型类,而请求仍在继续。
做了很多检查,从事研究和测试后,我能得到它由find()请求之前添加以下到行动控制器开始工作:
$this->Episode = ClassRegistry::init('Episode');
$this->Episode->bindModel(
array('belongsTo' => array(
'Show' => array(
'className' => 'Show'
)
)
)
);
趁现在这个作品我仍然想知道为什么我的模型没有被正确调用。非常感激任何的帮助。谢谢!
是的,我已经仔细检查了字段类型并正确设置。我也尝试过使用'foreignKey'设置,但没有使用相同的结果。我正在处理的主要问题是使用$ uses变量时未包含模型类。我故意将错误放入我的模型中,并且“使用”它们的控制器不会报错。 – 2011-01-30 17:56:13