次の Silverstripe ページ クラスを検討してください。
<?php
class Page extends SiteTree{
static $has_many = array('OtherDataObjects' => 'DataObjectClass');
public function getSearchContext() {
$fields = new FieldSet(
new TextField('Title', 'Tour'),
new DropdownField('OtherDataObjects', 'Other Data Object', array('data', 'value')
);
$filters = array(
'Title' => new PartialMatchFilter('Title'),
'OtherDataObjects' => new PartialMatchFilter('OtherDataObjects.Title')
);
return new SearchContext(
'Page',
$fields,
$filters
);
}
}
この検索フォームをフロントエンド フォームに追加して検索フォームを投稿すると、常に [User Error] が発生し、最後にこのような内容の SQL エラーが表示されます。
AND ("DataObjectClass_Live"."DataObjectClass_Live" LIKE 'title') ORDER BY "Sort" LIMIT 25 OFFSET 0 Table 'database DataObjectClass_Live' doesn't exist
has_many リレーションシップで検索を実行しようとするたびに、searchcontext 検索でエラーが発生します。ベースクラスにバージョン管理された拡張機能があるかどうかに関係なく、すべてのテーブルに _live を追加するため、バージョン管理された拡張機能が原因のようです。SilverStripe バージョン 2.4.x と最新の 3.0.x バージョンで同じエラーが発生します。
ヘルプやポインタをいただければ幸いです。