我需要在我的DataObjectManager中添加一个where子句。
我现有的代码如下所示:
$fields->addFieldToTab('Root.Backgrounds', new ImageDataObjectManager(
$this->owner,
'BackgroundImages',
'BackgroundImage',
));
我尝试过简单地添加它,如下所示,但它不适用于过滤器,我总是最终返回所有返回的BackgroundImages,而不是那些具有所需SubSiteID的那些。
$fields->addFieldToTab('Root.Backgrounds', new ImageDataObjectManager(
$this->owner,
'BackgroundImages',
'BackgroundImage',
"'BackgroundImage.SiteConfigID' = '".$this->owner->SubsiteID."'"
));
我已经尝试在子句中输入一个无效的表名,看看我是否可以将其设置为错误,但这并不会导致我认为它被完全忽略。
有人可以告诉我哪里出错了吗?
答案 0 :(得分:1)
'filter'是FileDataObjectManager构造函数的第7个参数,而不是第4个参数:(ImageDataObjectManager采用相同的参数)
$manager = new FileDataObjectManager(
$this, // Controller
'Resources', // Source name
'Resource', // Source class
'Attachment', // File name on DataObject
array(
'Name' => 'Name',
'Description' => 'Description',
'Category' => 'Category'
), // Headings
'getCMSFields_forPopup' // Detail fields (function name or FieldSet object)
// Filter clause <- **ADD YOUR FILTER HERE**
// Sort clause
// Join clause
);
请参阅http://doc.silverstripe.org/old/modules:dataobjectmanager