我陷入了一个误解/逻辑问题。
我一直在 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
, ie):
订阅者 - getCMSFields():
$fields->addFieldToTab('Root.Main', TextField::create('Card.Number', 'ID Card serial number'));
所以,此时我应该看到卡号加载到了TextField
,但是数据丢失了。如果我转换$this->Card()->Number
字段中的源参数仍然为空。
我错过了什么?
奖金问题
在这种情况下,我会反转逻辑,除此之外,在Subscriber
里面显示一个字段Card
,我认为这种方法是不可能的,对吧?如果我是对的,我应该转换belongs_to
为has_many
inCard
以实现这一目标,对吗?
谢谢你的支持。