我有这个MySQL查询:
SELECT DISTINCT hours.project_id
, projects.name
, sum(hours.spent_hours) AS expr1
, sum(hours.invoiced_hours) AS expr2
, hours.description
FROM
projects
INNER JOIN hours
ON projects.id = hours.project_id
GROUP BY
hours.project_id
, projects.id
, projects.name
, hours.description
你如何在CakePHP中将片段放入FIND方法?我试了好几次但没有运气......
我在文档中找到了这个:
array(
'conditions' => array('Model.field' => $thisValue), //array of conditions
'recursive' => 1, //int
'fields' => array('Model.field1', 'DISTINCT Model.field2'), //array of field names
'order' => array('Model.created', 'Model.field3 DESC'), //string or array defining order
'group' => array('Model.field'), //fields to GROUP BY
'limit' => n, //int
'page' => n, //int
'offset'=>n, //int
'callbacks' => true //other possible values are false, 'before', 'after'
)
有关数据库的其他信息:
项目有很多小时。 营业时间属于Project。 小时是project_id。
CakePHP 2.1.2。
谢谢! :)
答案 0 :(得分:1)
我假设你在以下几行的项目模型。
$result = $this->find(
'all',
array(
'fields' => array(
'Hour.projetc_id',
'Project.id',
'Project.name',
'SUM(Hour.spent_hours) AS expr1',
'SUM(Hour.invoiced_hours) AS expr2',
'Hour.description'
),
'group' => array(
'Hour.projetc_id',
'Project.id',
'Project.name',
'Hour.description'
)
)
);
您可能还希望看一下there来管理数组中的计算字段。
最后,我建议您查看Containable Behavior,因为它会加快您的数据库查询速度,并且只允许从数据库中获得所需内容。