2011-06-28 102 views
1

为了简单起见,我有两个表:项目和任务。一个项目可以有很多任务,一个任务属于一个项目。 我已经建立了数据库,创建了关联并使用了蛋糕烘烤来生成模型,控制器和视图,并且都是完美的。 当我查看项目的索引视图时,我看到一个按预期列出所有项目的表格。我想要做的事情非常简单:我需要该表中的一列显示分配给该项目的所有任务的计数。将自定义查询添加到模型

这个SQL查询是微不足道的(返回项目名称列表和任务计数):

SELECT projects.name, 
(SELECT COUNT(*) FROM tasks WHERE project_id = projects.id) as taskCount 
FROM projects 

那么,如何在CakePHP中实现这一目标? 在项目控制器索引方法看起来像这样的时刻:

function index() { 
    $this->Project->recursive = 0; 
    $this->set('projects', $this->paginate()); 
} 

回答

1

可以使用virtualFieldscounterCache,却是另一种方式。

+0

将此项添加到项目模型中: var $ virtualFields = array('taskcount'=>'SELECT COUNT(*)FROM tasks WHERE project_id = Project.id'); 和一切都很好! – Ben