SilverStripe显示has_one关系值

时间:2018-04-20 12:53:34

标签: php silverstripe silverstripe-4

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

我一直在SilverStripe工作,需要在has_many之间显示many_manyDatObjects关系数据,通常通过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以实现此目的,这是正确的吗?

感谢您的支持。

0 个答案:

没有答案