Silverstripe:向ImageDataObjectManager添加where子句

时间:2012-07-06 04:47:16

标签: php silverstripe

我需要在我的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."'" 
      ));

我已经尝试在子句中输入一个无效的表名,看看我是否可以将其设置为错误,但这并不会导致我认为它被完全忽略。

有人可以告诉我哪里出错了吗?

1 个答案:

答案 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