1

我陷入了一个误解/逻辑问题。

我一直在 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_tohas_manyinCard以实现这一目标,对吗?

谢谢你的支持。

4

0 回答 0