我正在尝试从其他网页类型的网页类型中获取字段“费用”的总和。 (ProjectCategory),像这样:
class ProjectCategory extends Page {
static $belongs_many_many = array(
'RelateToProject' => 'Project'
);
function totalCost(){
$sqlQuery = new SQLQuery(
"SUM(Project.cost)", // Select
"Project", // From
"what to do here?" // Where (optional)
);
$totalVisits = $sqlQuery->execute()->value();
return $totalVisits;
}
我该怎么办?如何获得此类别的成本总和? (如果我将where
留空,则返回每个类别的所有项目成本的总和 - 这是不好的。
答案 0 :(得分:1)
“where”部分应该是:
"ID = " . $this->RelateToProjectID
哦,等等,上面的内容只适用于$ has_one,但你使用的是很多关系。
以下内容应该为你们多人关系提供诀窍:
构建相关项目的ID数组:
$projects = $this->RelateToProject();
$projectIDs = array();
if($projects) {
foreach($projects as $project) {
$projectIDs[] = $project->ID;
}
}
然后在'where'语句中使用它们,如下所示:
"ID IN (" . join(',',$projectIDs) . ")"