Silverstripe 3.1-在删除/写入之前/之后不';行不通

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';

我试图在onAfterWrite、before或onBeforeDelete上执行一个简单的write命令。但它根本不起作用

Object1->我想在这里执行代码。与对象2有$Has_one关系(项)

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上使用的内联网格存在一些问题。