在Silverstripe模型中查询远程表

在Silverstripe模型中查询远程表,silverstripe,Silverstripe,我试图从一个页面类型和另一个页面类型中获取一个字段“cost”的总和。(ProjectCategory),如下所示: class ProjectCategory extends Page { static $belongs_many_many = array( 'RelateToProject' => 'Project' ); function totalCost(){ $sqlQuery = new SQLQuery( "SUM(Project.cos

我试图从一个页面类型和另一个页面类型中获取一个字段“cost”的总和。(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
留空,它将返回每个类别的所有项目成本的总和-这是不好的)

位置部分应为:

"ID = " . $this->RelateToProjectID
哦,等等,上面的方法只适用于für$has___-one,但你使用的是多人关系

以下几点对你的多人关系有帮助:

构建相关项目的ID数组:

$projects = $this->RelateToProject();
$projectIDs = array();
if($projects) {
  foreach($projects as $project) {
    $projectIDs[] = $project->ID;
  }
}
然后在“where”语句中使用它们,如下所示:

"ID IN (" . join(',',$projectIDs) . ")"