SilverStripe 4 - DataExtension

时间:2018-04-09 14:47:33

标签: php silverstripe silverstripe-4

在SS 4.0.3上,我只想尝试在SiteConfig扩展名和DataObject之间建立关系。 DataExtension有一个has_many关系,指向has_one中的通讯DataObject。 在/dev/build?flush=all,CMS会向我提出以下异常,我不明白为什么。

准确地说; DataObjectCassaDataExtensionConfigurazioneExtension

这是消息:

  

[紧急]未被捕获的例外情况:在课程' 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之间是否禁止某些类型的关系?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

在你的Cassa模型中,你应该参考SiteConfig,而不是它的扩展名:

use SilverStripe\SiteConfig\SiteConfig;
// ...

private static $has_one = [
    'ConfigurazioneExtension' => SiteConfig::class
]; // etc...

扩展应用于它们扩展的对象的配置,因此,只要您定义关系,查找配置,引用方法等,就应该引用原始DataObject(在本例中为SiteConfig)。 ; t需要直接引用它们(通常)。