2

在 SS 4.0.3 上,我只是想在SiteConfig扩展和DataObject. DataExtension有一个has_many指向 中的通讯员has_one的关系DataObject。在/dev/build?flush=allCMS 上抛出以下异常,我不明白为什么。

准确地说;DataObject作为CassaDataExtension作为ConfigurazioneExtension

这是消息:

[紧急] 未捕获的异常:在“Cassa”类上找不到 has_one,从“SilverStripe\SiteConfig\SiteConfig”到“Cassa”的 has_many 关系需要“Cassa”上的 has_one

这是代码:

卡萨

/**
 * Classe Cassa
 */
class Cassa extends MetodoPagamento
{
    // Dichiarazione Proprietà
    private static $db = [
        'Iban' => 'Varchar',
        'IstitutoCredito' => 'Text'
    ];
    private static $has_one = [
        'ConfigurazioneExtension' => 'ConfigurazioneExtension'
    ]; // etc...

配置扩展

/**
 * Classe Configurazione - Estensione
 */
class ConfigurazioneExtension extends DataExtension
{
    // Dichiarazione Proprietà
    private static $has_many = [
        'Casse' => 'Cassa'
    ]; // etc...

DataObjects 和 DataExtensions 之间是否禁止某些类型的关系?

在此先感谢您的帮助。

4

1 回答 1

3

在您的 Cassa 模型中,您应该引用 SiteConfig,而不是它的扩展名:

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

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

扩展应用于它们扩展的对象的配置,因此无论何时定义关系、查找配置、引用方法等,您都应该引用原始 DataObject(在本例中为 SiteConfig)。您不需要直接引用它们(一般来说)。

于 2018-04-09T23:39:27.747 回答