Silverstripe 3 leftjoin

时间:2012-08-27 17:25:56

标签: content-management-system silverstripe

我在自定义页面类型“ProjectPage”和相应的关系表(“ProjectPage_Categories”)上执行leftjoin时遇到问题。 ProjectPage有很多类别,而类别可以属于很多项目。 ProjectPage如下所示:

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错误:'on clause'中的未知列'ProjectPage.ID'

非常类似的事情没有问题:

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

我猜测有问题,因为ProjectPage扩展了Sitetree,并且没有名为“ProjectPage”的表。我试图用SiteTree替换ProjectPage,但到目前为止还没有成功。

非常感谢, 弗洛里安

1 个答案:

答案 0 :(得分:1)

如果我做得对,你根本不需要手动加入:

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

没有