在CakePHP的Model方法中,没有办法将Model实例作为对象(而不是数组)访问吗?作为一个超级简单例子,我的直觉告诉我,它应该是可以做这样的事情:从CakePHP中的控制器调用模型方法
Bird.php
...
public function specialName()
{
$name = $this->name;
return "Oh wow! It's ".$name;
}
如果我把从我BirdController.php这种方法就像这样:
public function view($id) {
if (!$id) {
throw new NotFoundException(__('Invalid bird'));
}
$this->Bird->id = $id;
$this->set('results', $this->Bird->specialName());
}
。然后它在视图文件中显示为“哦,哇!它是鸟”而不是“哦,哇!它是弗雷迪”(即模型的名称,而不是模型实例的名称)。
我试过这种通用方法的变体,无济于事。看来我必须通过数组访问信息,如下所示:
Bird.php
...
public function specialName($id)
{
$data = $this->findById($id);
$name = $data['Bird']['name'];
return "Oh wow! It's ".$name;
}
这似乎对我来说太复杂了。我错过了什么?最终,我希望能够访问我的模型函数中的依赖模型,例如获取所有相关的鸟类 - >亚种。看起来这样做会更容易处理对象。
嗨burzum。感谢您花时间解决我的问题。是的,我花了不少时间阅读文档,并且编写了博客教程。我了解如何创建相关模型;我的问题是如何最好地访问数据。根据我对另一个PHP框架的经验,我曾预期将结果作为数据对象返回,但是您已经向我确认,如果不使用插件,则当前版本的Cake不可能。 – codebird