在SS 4.0.3上,我只想尝试在SiteConfig
扩展名和DataObject
之间建立关系。 DataExtension
有一个has_many
关系,指向has_one
中的通讯DataObject
。
在/dev/build?flush=all
,CMS会向我提出以下异常,我不明白为什么。
准确地说; DataObject
为Cassa
,DataExtension
为ConfigurazioneExtension
:
这是消息:
[紧急]未被捕获的例外情况:在课程' Cassa'中找不到has_one,来自' SilverStripe \ SiteConfig \ SiteConfig'的has_many关系到了' Cassa'需要一个on_one on' Cassa'
以下是代码:
卡萨
/**
* Classe Cassa
*/
class Cassa extends MetodoPagamento
{
// Dichiarazione Proprietà
private static $db = [
'Iban' => 'Varchar',
'IstitutoCredito' => 'Text'
];
private static $has_one = [
'ConfigurazioneExtension' => 'ConfigurazioneExtension'
]; // etc...
ConfigurazioneExtension
/**
* Classe Configurazione - Estensione
*/
class ConfigurazioneExtension extends DataExtension
{
// Dichiarazione Proprietà
private static $has_many = [
'Casse' => 'Cassa'
]; // etc...
DataObjects和DataExtensions之间是否禁止某些类型的关系?
提前感谢您的帮助。
答案 0 :(得分:3)
在你的Cassa模型中,你应该参考SiteConfig,而不是它的扩展名:
use SilverStripe\SiteConfig\SiteConfig;
// ...
private static $has_one = [
'ConfigurazioneExtension' => SiteConfig::class
]; // etc...
扩展应用于它们扩展的对象的配置,因此,只要您定义关系,查找配置,引用方法等,就应该引用原始DataObject(在本例中为SiteConfig)。 ; t需要直接引用它们(通常)。