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');
}
私はそれが簡単にこの問題を再現するために作るために多くの白いスペースといくつかのPHPタグとhttp://pastebin.com/QBfU8Fubにこのコードをアップロードしました。私は基本的にこれまでの動作に従っていますので、この素晴らしいCMSから期待していたことをするために検索コンテキストとフィルタを手動で書き込む必要はありません。