2016-05-12 92 views
2

在Silverstripe V2中,可以創建跨越諸如Obj1.Obj2.Obj3.Obj3Field等關係的可搜索字段,但現在在V3中產生以下錯誤。 。

[User Error] Uncaught LogicException: relation can't be called on an UnsavedRelationList. 
GET /zz_silverstripe_default/admin/mymodeladmin/ 
Line 391 in C:\xampp\htdocs\zz_silverstripe_default\framework\model\UnsavedRelationList.php 
Source 
390  public function relation() { 
391   throw new LogicException(__FUNCTION__ . " can't be called on an UnsavedRelationList."); 
392  } 
Trace 
UnsavedRelationList->relation(EndObject) 
DataObject.php:3009 
DataObject->relObject(MiddleDataObjects.EndObject.Name) 
DataObject.php:2285 
DataObject->scaffoldSearchFields() 
DataObject.php:2230 
DataObject->getDefaultSearchContext() 
ModelAdmin.php:173 

重現這是代碼...

class MyModelAdmin extends ModelAdmin { 
    static $managed_models = array('RootDataObject'); 
    static $url_segment = 'mymodeladmin'; 
    static $menu_title = 'MyModelAdmin'; 
    static $model_importers = array(); 
} 

class RootDataObject extends DataObject { 
    private static $db = array('Name' => 'Varchar(255)'); 
    private static $has_many = array('MiddleDataObjects' => 'MiddleDataObject'); 
    static $searchable_fields = array('MiddleDataObjects.EndObject.Name'); 
} 

class MiddleDataObject extends DataObject { 
    private static $db = array('Name' => 'Varchar(255)'); 
    private static $has_one = array('RootDataObject' => 'RootDataObject'); 
    private static $many_many = array('EndDataObjects' => 'EndDataObject'); 
} 

class EndDataObject extends DataObject { 
    private static $db = array('Name' => 'Varchar(255)'); 
    private static $belongs_many_many = array('OtherDataObjects' => 'OtherDataObject'); 
} 

我上傳此代碼http://pastebin.com/QBfU8Fub更多的空格和一些PHP代碼,使其更容易重現此問題。我基本上是以前的行爲工作,所以我不必繼續手動編寫搜索上下文和過濾器來做一些我期望從這個不錯的CMS中獲得的東西。

回答