嘿所有我有一个扩展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。
非常感谢任何有关如何解决此问题的帮助或建议。