SilverStripe 4 - DataExtension 上的 has_many 关系
SilverStripe 4 - has_many relation on DataExtension
在 SS 4.0.3 上,我只是想在 SiteConfig
扩展和 DataObject
之间建立关系。 DataExtension
有一个 has_many
关系指向 DataObject
中的对应者 has_one
。
在 /dev/build?flush=all
上,CMS 抛出以下异常,我不明白为什么。
准确地说; DataObject
作为 Cassa
和 DataExtension
作为 ConfigurazioneExtension
:
这是消息:
[Emergency] Uncaught Exception: No has_one found on class 'Cassa', the has_many relation from 'SilverStripe\SiteConfig\SiteConfig' to 'Cassa' requires a has_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 之间是否禁止某些类型的关系?
在此先感谢您的帮助。
在您的 Cassa 模型中,您应该引用 SiteConfig,而不是它的扩展名:
use SilverStripe\SiteConfig\SiteConfig;
// ...
private static $has_one = [
'ConfigurazioneExtension' => SiteConfig::class
]; // etc...
扩展适用于它们扩展的对象的配置,因此无论何时定义关系、查找配置、引用方法等,您都应该引用原始 DataObject(在本例中为 SiteConfig)。您不需要需要直接引用它们(通常)。
在 SS 4.0.3 上,我只是想在 SiteConfig
扩展和 DataObject
之间建立关系。 DataExtension
有一个 has_many
关系指向 DataObject
中的对应者 has_one
。
在 /dev/build?flush=all
上,CMS 抛出以下异常,我不明白为什么。
准确地说; DataObject
作为 Cassa
和 DataExtension
作为 ConfigurazioneExtension
:
这是消息:
[Emergency] Uncaught Exception: No has_one found on class 'Cassa', the has_many relation from 'SilverStripe\SiteConfig\SiteConfig' to 'Cassa' requires a has_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 之间是否禁止某些类型的关系?
在此先感谢您的帮助。
在您的 Cassa 模型中,您应该引用 SiteConfig,而不是它的扩展名:
use SilverStripe\SiteConfig\SiteConfig;
// ...
private static $has_one = [
'ConfigurazioneExtension' => SiteConfig::class
]; // etc...
扩展适用于它们扩展的对象的配置,因此无论何时定义关系、查找配置、引用方法等,您都应该引用原始 DataObject(在本例中为 SiteConfig)。您不需要需要直接引用它们(通常)。