我是一个相对的新手,所以对你们大多数人来说这可能是显而易见的,但对我来说却不是这样!
我有3个型号(针对此问题)
Project,ProjectDataset和UserSessionDownload
Project中的视图调用控制器UserSessionDownloads在日志表中记录下载(由于Steve Moseley的帮助,这里运行良好),然后进行下载。要下载该文件,需要该文件的完整路径名。
然后,UserSessionDownload函数调用ProjectDataset的Model / Controller来获取所选ProjectDataset的文件名(由id标识)。
此文件名将用于获取相关文件。
代码部分如下: 在项目视图中:
echo $this->Html->Link('Add a Ref', array('controller'=>'UserSessionDownloads', 'action'=>'add_download',$project_dataset['id'],$project['Project']['id']));
在UserSessionDownloads中,函数“add_download”然后调用ProjectDataset中的函数(我已将ProjectDataset模型加载到此函数中):
$filename = $this->ProjectDataset->get_filename($this->request->params['pass'][0]);
(params指的是通过Project视图调用传入的数据集的id)
现在,我已尝试在模型和控制器文件中使用get_filename函数 - 但两者似乎都无法从project_datasets表中获取所需的数据集数据。
我尝试了很多组合 - 但显然不是正确的组合。
例如,如果我尝试在Controller中放置函数:
$this->set('projectDataset', $this->ProjectDataset->read(null, $id));
$filename = $this->projectDataset['dataset_filename'];
失败 - 说SQL不正确(甚至看起来不像sql!)
和此:
$this->set('project_dataset', = $this->ProjectDataset->find('first',array('conditions' => array('id' => $id)));
$filename = $this->project_dataset['dataset_filename'];
报告SQL错误失败。
如果我把函数放在Model中,那么我会得到错误,说该对象不存在..
很抱歉这个问题很长,但是如果你知道有什么改变的话,我会很感激,或者如果你知道一些有用的东西,请给我一个例子。
由于
答案 0 :(得分:0)
不确定您正在尝试使用此
$this->set('projectDataset', $this->ProjectDataset->read(null, $id));
$filename = $this->projectDataset['dataset_filename'];
但控制器操作中的$this->set()
设置一个变量以供在视图中使用,而不是在控制器中进一步使用。 (除非你的意思是$filename
在视图中)
其次,除非您先前已使用$this->ProjectDataset->read(null, $id)
,否则不会使用$this->projectDataset
访问$projectData = $this->ProjectDataset->findById($id);
$filename = $projectData['ProjectDataSet']['dataset_filename'];
的返回值。
从你的问题中抓住吸管,但我认为可能的解决方案可能是
class ProjectDataset extends AppModel
{
public function filename($id)
{
$data = $this->findById($id);
return $data['ProjectDataSet']['dataset_filename'];
}
}
$filename = $this->ProjectDataset->filename($id);
然后在您的控制器中调用以下内容
{{1}}