2011-09-30 2 views
0

anouther 페이지 유형의 페이지에서 "비용"필드의 합계를 얻으려고합니다. (ProjectCategory) :silverstripe 모델의 먼 테이블 쿼리하기

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는 내가 무엇을할까요? 이 카테고리의 비용 합계를 어떻게 얻을 수 있습니까? . 내가 그것을 모든 카테고리에 대한 모든 프로젝트 비용의 합을 반환하는 경우 공백으로두면 (- 좋은하지 않습니다 어떤 도움

감사합니다,

답변

1

는 부분은 "여기서"해야합니다 :

"ID = " . $this->RelateToProjectID 

오, 위에서에만 모피 $의 has_one를 작동, 대기,하지만 당신은 many_many 관계를 사용하고 있습니다.

을 당신의 많은 트릭을해야 다음 _many 관계 :

구축 관련 프로젝트의 ID의 배열 :

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

은 다음과 같이 당신의 '어디에'문에서 사용할 :

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

최고, 감사합니다! – Will