SilverStripe 3:在child的onAfterWrite()中获取父DataObject的ID

时间:2012-10-16 03:27:01

标签: silverstripe

在SilverStripe 2.4中,我能够通过

获取子数据对象“B”的onAfterWrite()方法中的父DataObject“A”的ID
$this->AClassID

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

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

此处的示例代码供您考虑:

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

3 个答案:

答案 0 :(得分:2)

试试$this->AClass->ID。或者,如果您在Parent

中设置了has_one关系
public static $has_one=array(
    'Parent'=>'AClass'
);

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

答案 1 :(得分:0)

在继续之前使用if语句确保它不为0。喜欢

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

或者

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

原因是它被多次调用,你只需要在非零时执行。

答案 2 :(得分:0)

试试这个:

$this->Parent()->ID