0

我试图从另一个页面类型的页面类型中获取字段“成本”的总和。(项目类别),像这样:

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留空,它会返回每个类别的所有项目成本的总和——这不好)。

4

1 回答 1

1

“哪里”部分应该是:

"ID = " . $this->RelateToProjectID

哦,等等,上面的方法只适用于 $has_one,但你使用的是 many_many 关系。

以下应该可以解决您的 many_many 关系:

构建相关项目的 ID 数组:

$projects = $this->RelateToProject();
$projectIDs = array();
if($projects) {
  foreach($projects as $project) {
    $projectIDs[] = $project->ID;
  }
}

然后在你的'where'语句中使用它们,如下所示:

"ID IN (" . join(',',$projectIDs) . ")"
于 2011-09-30T09:24:20.913 回答