カスタム ページ タイプ "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 に置き換えようとしましたが、これまでのところ成功していません。
どうもありがとう、フロリアン