考虑以下 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
);
}
}
将此搜索表单添加到前端表单并发布搜索表单总是会导致 [用户错误] 并在末尾包含类似这样的 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 版本中遇到相同的错误。
任何帮助或指示将不胜感激。