2012-10-16 54 views
0

在SilverStripe 2.4,我能够SilverStripe 3:获取父数据对象的ID在孩子的onAfterWrite()

$this->AClassID 
得到父母数据对象 “A” 的ID在onAfterWrite()子数据对象 “B” 的方法

如何在“B”的onAfterWrite()方法中获得“A”的ID?

注意:“A”有许多“B”,“B”有一个“A”(一对多关系)。

示例代码这里样的考虑:

http://www.sspaste.com/paste/show/507d5222878a7

+0

请您发布您的代码,只是要确定 – Zauberfisch

回答

0

在继续之前使用if语句以确保它不是0。像

if($this->ID){ 
//put all your code here 
} 

或者

if($this->RelationName()->ID){ 
//put all your code here 
} 

的原因是,它被称为多次,你只需要当它是非零执行。

2

尝试$this->AClass->ID。或者,如果你在你的has_one一个Parent关系设置即

public static $has_one=array(
    'Parent'=>'AClass' 
); 

你可以使用$this->Parent->ID

+0

http://www.sspaste.com/paste/show/507d5222878a7 这里是关照代码。当我在MatchDate的AfterWrite()注释掉时,它可以正常工作。否则,查询它尝试获取匹配类的ID是否导致问题。因为我无法获得MatchID(父母)。 – azeem

+0

我已经尝试了您的代码中提到的解决方案,但无法获得ID。 – azeem

0

试试这个:

$this->Parent()->ID 
+2

欢迎来到Stack Overflow!请考虑编辑您的帖子,以添加更多关于您的代码的解释以及为什么它可以解决问题。一个主要包含代码的答案(即使它正在工作)通常不会帮助OP了解他们的问题。如果这只是猜测,也建议您不要发布答案。一个好的答案会有一个合理的理由解释为什么它可以解决OP的问题。 – SuperBiasedMan

相关问题