0

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

我尝试在子句中输入一个无效的表名,看看是否可以让它出错,但它不会让我相信它被完全忽略了。

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

4

1 回答 1

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

于 2012-07-06T07:55:36.030 回答