Silverstripe 3.1-在删除/写入之前/之后不';行不通
我试图在onAfterWrite、before或onBeforeDelete上执行一个简单的write命令。但它根本不起作用 Object1->我想在这里执行代码。与对象2有$Has_one关系(项)Silverstripe 3.1-在删除/写入之前/之后不';行不通,silverstripe,Silverstripe,我试图在onAfterWrite、before或onBeforeDelete上执行一个简单的write命令。但它根本不起作用 Object1->我想在这里执行代码。与对象2有$Has_one关系(项) public function onAfterWrite(){ parent::onAfterWrite(); $item = Object2::get()->byID($this->ItemID); $item->Title = 'test123';
public function onAfterWrite(){
parent::onAfterWrite();
$item = Object2::get()->byID($this->ItemID);
$item->Title = 'test123';
$item->write();
}
在后/前函数中,相互之间存在相同的问题。
如果没有错误,或者其他任何事情
错误在哪里?如果我理解正确,您希望获取并操作通过与Object1记录的has_one关系关联的Object2记录。假设您在Object2中声明了关系,如下所示:
class Object2 extends DataObject{
private static $has_one = array(
'Object1' => 'Object1'
);
...
Object1中的onAfterWrite代码应该如下所示
public function onAfterWrite(){
parent::onAfterWrite();
// use the find() method to look up the relation
$item = Object2::get()->find('Object1ID', $this->ItemID);
// check that the related item exists before editing
if($item){
$item->Title = 'test123';
$item->write();
}
}
我们能看看你是如何定义你们两个关系的吗?另外,你到底想用它实现什么?获取Object2的一个简单方法是
$item=$this->item()
如果定义了关系item=>Object2
,问题是我在Object1上使用了内联网格。所以,如果你编辑smthg。在内联网格中,第一次保存不会保存object1。如果您再次单击“保存”按钮,它就会工作..这并不能解决我的问题,但它解决了这个问题;)我发现我在object1上使用的内联网格存在一些问题。