我陷入了误解/逻辑问题。
我一直在SilverStripe工作,需要在has_many
之间显示many_many
和DatObjects
关系数据,通常通过GridField
等字段类型进行管理。但现在,我遇到了一个案例,我应该在另一个内部显示来自特定DataObject
的一些数据。他们通过has_one / belongs_to
关系相关。
在我的例子中,我在SS 4.0.3上运行了这两个对象:
对象1 - 订阅者:
private static $has_one = [
'Card' => 'Card'
];
对象2 - 卡片:
private static $db = [
'Number' => 'Varchar'
];
private static $belongs_to = [
'Subcriber' => 'Subscriber'
];
我会在Card
内显示Subscriber
的数据。通常,我的逻辑应该是这样的:通过使用点符号来声明相关的Card
字段(以及声明$summary_fields
,即。):
订阅者 - getCMSFields():
$fields->addFieldToTab('Root.Main', TextField::create('Card.Number', 'ID Card serial number'));
所以,此时我应该看到TextField
中加载的卡号,但数据丢失了。如果我在$this->Card()->Number
中转换源参数,则该字段仍为空。
我错过了什么?
在这种情况下,我会反转逻辑,除此之外,在Subscriber
内显示Card
字段,我认为这种方法是不可能的,对吧?如果我是对的,我应该在belongs_to
中将has_many
转换为Card
以实现此目的,这是正确的吗?
感谢您的支持。