2010-09-19 45 views
1

这可能是一个愚蠢的问题,但我无法在任何地方找到明确的答案。如何访问控制器中的模型数据?如果可以,如何实现?可以在CakePHP中访问控制器中的模型数据吗?

我试过如下:

$this->set('mydata', $this->Model->find('all', 'conditions' => array('id' => 'someID'))); 

,并通过此控制器访问它:

$mydata['Model']['field'] 

但似乎仅是意见。

有没有办法访问控制器中的模型数据?原因是我需要在关联模型(belongsTo)上执行计算,这些计算不能通过隐藏字段或任何东西来完成,因为关联模型的ID直到提交表单后才会传递。

任何帮助将不胜感激!

回答

1

嗯,怎么样:

$myData = $this->Model->find('all', 'conditions' => /* ... */); 

$myData['Model']['field']; 
$myData['RelatedModel']['field']; 

$this->set('mydata', $myData); 

足够:)简单

型号:: find()方法返回你的数据,你并不需要直接传递给控制器​​::集() ,你可以先把它弄混,然后传递给你的观点。但是,我建议不要这样做,如果你有一个Model :: messWithData($ data)并让模型处理数据,让控制器处理应用程序逻辑,那么会更好。请记住,胖模型,瘦身控制器

+1

感谢您的回应!我想要做的是执行计算,它使用表单提交中的一些数据并将其与来自关联的belongsTo模型的数据混合。你是说我应该在执行计算的关联模型中有一个函数,然后在控制器中调用它? – Justin 2010-09-19 16:32:29

+1

取决于你想要做什么,但我的答案基本上是“是”。 :)最好将你的数据改变的东西保存在你的模型中(这是他们的目的!),除非它是你只会在视图中显示的东西(即,如果它只是一个格式问题 - 在这种情况下,我'd使用一个自定义的助手来准备显示的数据)。 – 2010-09-19 16:38:07

+0

谢谢,我已经开始在整个项目中实现这个功能,它确实使代码更具可读性,以便在模型中具有所有数据库查询! – Justin 2010-09-20 15:35:26