SilverStripe 3.0 ModelAdmin过滤器结果不可编辑

时间:2015-01-09 05:56:57

标签: silverstripe

嘿所有我有一个扩展ModelAdmin的类共享数据

class SharedData extends ModelAdmin
{
// Managed models - Each model automatically get a tab added to Shared Data admin page
public static $managed_models = array(
    'Unit' => array('title' => 'Units'),
    'UnitType' => array('title' => 'Unit Types'),
    'StudentType' => array('title' => 'Student Types'),
    'EmpArea' => array('title' => 'Employment Areas'),        
);

public static $model_importers = array(
    'Unit' => 'UnitCsvBulkLoader',
    'UnitType' => 'CsvBulkLoader',
    'StudentType' => 'CsvBulkLoader',
    'EmpArea' => 'CsvBulkLoader',        
);

public static $url_segment = 'shared-data';

public static $menu_title = 'Shared Data';

// Place it right below the Pages menu item which has a priority of 10
public static $menu_priority = 9;
}

我有所有$ managed_models的模型。例如,EmpArea的模型:

class EmpArea extends MultilingualDataObject {

  public static $db = array(

      'Name' => 'Varchar'
  );


  public function getCMSFields() {

       $fields = parent::getCMSFields();

          $fields->addFieldtoTab('Root.Main', new TextField('Name', 'Employment Area'));
              // add extension updateCMSFields to include translations
      $this->doExtend("updateCMSFields",$fields, get_class());
      return $fields;
  }

}

ModelAdmin完美显示记录,直到使用屏幕左侧的过滤器小部件应用过滤器。当您应用过滤器时,ModelAdmin会获取正确的记录并过滤gridview,但是如果您单击其中一个记录来查看/编辑它,则会抛出一个流浪错误:

ERROR [User Error]: Couldn't run query: 
SELECT DISTINCT "MultilingualDataObject"."ID"
FROM "MultilingualDataObject"
WHERE ("EmpArea"."Name" LIKE '%HR%') AND ("MultilingualDataObject"."ClassName" IN  'EmpArea'))
LIMIT 30 

Unknown column 'EmpArea.Name' in 'where clause'
IN GET /admin/shared-data/EmpArea/EditForm/field/EmpArea/item/420/edit? q%5BName%5D=HR&action_search=Apply+Filter
Line 580 in /vagrant/framework/model/MySQLDatabase.php

Source
======
  571:  }
  572: 
  573:  public function databaseError($msg, $errorLevel = E_USER_ERROR) {
  574:      // try to extract and format query
  575:      if(preg_match('/Couldn\'t run query: ([^\|]*)\|\s*(.*)/', $msg, $matches)) {
  576:          $formatter = new SQLFormatter();
  577:          $msg = "Couldn't run query: \n" . $formatter->formatPlain($matches[1]) .  "\n\n" . $matches[2];
  578:      }
  579: 
* 580:      user_error($msg, $errorLevel);
  581:  }
  582: 
  583:  /**
  584:   * Return a boolean type-formatted string
  585:   *
  586:   * @param array $values Contains a tokenised list of info about this data type

过滤网格视图后,任何选项卡上都会抛出此错误,并且不限于EmpArea。

非常感谢任何有关如何解决此问题的帮助或建议。

0 个答案:

没有答案