2012-10-16 99 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

相關問題