1

カスタム ページ タイプ "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 句' に不明な列 'ProjectPage.ID' があります

非常によく似たことが問題なく機能します。

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

ProjectPage が Sitetree を拡張し、「ProjectPage」という名前のテーブルがないため、問題があると思います。ProjectPage を SiteTree に置き換えようとしましたが、これまでのところ成功していません。

どうもありがとう、フロリアン

4

1 に答える 1

1

私が正しく理解していれば、手動で参加する必要はまったくありません。

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

番号?

于 2012-08-27T18:16:03.707 に答える