我有两个不同的数据对象(StockExchangeShare和NewsArticle),它们通过many\u many关系链接。
在新闻文章中。php:
private static $many_many = [
'Shares' => StockExchangeShare::class
];
在StockExchangeShare中。php:
private static $belongs_many_many = [
'NewsArticles' => NewsArticle::class
];
当添加新的新闻文章时,用户应该能够将一些现有的证券交易所股票链接到新文章。这应该使用配置为“GridFieldConfig\u RelationEditor”的GridField来完成。
目前,只有在创建了一篇新闻文章之后,这才有效。我无法通过网格字段将共享添加到新(未保存)文章中。这是错误消息:
E\u RECOVERABLE\u错误:传递给SilverStripe\ORM\DataList::subtract()的参数1必须是SilverStripe\ORM\DataList的实例,给定的SilverStripe\ORM\UnsavedRelationList的实例,在/vendor/SilverStripe/framework/src/Forms/GridField/GridFieldAddExistingAutocompleter中调用。php在线247
下面是我用来创建网格字段的代码:
$gridFieldConfig = GridFieldConfig_RelationEditor::create();
$gridFieldConfig->removeComponentsByType(GridFieldAddNewButton::class);
$gridFieldConfig->getComponentByType(GridFieldAddExistingAutocompleter::class)->setSearchFields(array('name', 'tickerSymbol', 'isin', 'wpknr'));
$gridFieldConfig->getComponentByType(GridFieldAddExistingAutocompleter::class)->setResultsFormat('$name | $isin');
$fields->addFieldsToTab('Root.Main', [
GridField::create(
'Shares',
'Shares',
$this->Shares(),
$gridFieldConfig
),
]);
这是SilverStripe的问题还是我做错了什么?