2012-08-27 60 views
1

我在自定義頁面類型「ProjectPage」和對應的關係表(「ProjectPage_Categories」)上執行左連接時遇到問題。 ProjectPage有許多類別,類別可以屬於許多項目。 ProjectPage看起來是這樣的:Silverstripe 3 leftjoin

class ProjectPage extends Page { 
    static $many_many = array(
     'Categories' => 'Category' 
    ); 

和類別這樣的:

class Category extends DataObject { 
    static $belongs_many_many = array(
     'ProjectPages' => 'ProjectPage' 
    ); 

我正嘗試獲取涉及特定類別的所有此類ProjectPages:

$projectPages = ProjectPage::get() 
     ->leftJoin("ProjectPage_Categories", "ProjectPage_Categories.ProjectPageID = ProjectPage.ID") 
     ->filter(array('CategoryID' => $categoryID)); 

不幸的是這不起作用。總有一個SQL錯誤:未知列「ProjectPage.ID」在「關於條款」

非常類似的工作沒有問題:

$members = Member::get() 
    ->leftJoin("Group_Members", "Group_Members.MemberID = Member.ID") 
    ->filter(array('GroupID' => '2')); 

I'm猜有是因爲有問題ProjectPage擴展了Sitetree,並沒有名爲「ProjectPage」的表。我試圖用SiteTree替換ProjectPage,但目前爲止沒有成功。

非常感謝, 弗洛裏安

回答

1

,如果我得到它的權利,你不應該需要人工參與,在所有:

$category = Category::get()->byID($categoryID); 
$projectPages = $category->ProjectPages(); 

沒有?

+0

謝謝你,這就是辦法其實很容易,但:)這裏真的很難找到:http://doc.silverstripe.org/framework/en/topics/datamodel我是否要添加有關訪問關係中的一些線路。 – spierala