0

我是一个相对新手,所以这对你们大多数人来说可能是显而易见的,但对我来说不是!

我有 3 个模型(针对这个问题)

项目、ProjectDataset 和 UserSessionDownload

Project 中的视图调用控制器 UserSessionDownloads 以在日志表中记录下载(感谢 Steve Moseley 的帮助,运行良好),然后进行下载。要下载文件,需要文件的完整路径名。

因此,UserSessionDownload 函数然后调用 ProjectDataset 的模型/控制器来获取所选 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]);

(参数是指从项目视图调用传入的数据集的id)

现在,我尝试了模型和控制器文件中的 get_filename 函数 - 但两者似乎都无法从 project_datasets 表中获取所需的数据集数据。

我尝试了许多组合 - 但显然不是正确的组合。

例如,如果我尝试将函数放入控制器中:

$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 错误。

虽然如果我将函数放入模型中,那么我会收到错误消息说对象不存在..

很抱歉这篇文章的长度,但如果您有建议的更改,或者如果您知道有些东西可行,请给我一个例子。

谢谢

4

1 回答 1

0

不知道你在尝试什么

$this->set('projectDataset', $this->ProjectDataset->read(null, $id));
$filename = $this->projectDataset['dataset_filename'];

但是$this->set()在控制器动作中设置了一个在视图中使用的变量,而不是在控制器中进一步使用。(除非你的意思$filename是在视图中)

其次,除非您之前已分配,否则您不会访问$this->ProjectDataset->read(null, $id)using的返回值。$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); 
于 2013-05-30T11:52:56.867 回答