Silverstripe 3.1 - onBefore / After删除/写入不起作用

时间:2014-07-04 19:45:37

标签: silverstripe

我试图在onAfterWrite或之前或onBeforeDelete上执行简单的写命令。但它根本不起作用。

对象1 - >在这里我想执行代码。与Object2具有$ has_one关系(Item)

public function onAfterWrite(){
    parent::onAfterWrite();

    $item = Object2::get()->byID($this->ItemID);
    $item->Title = 'test123';
    $item->write();
}

在After / Before功能上相互出现同样的问题。 如果没有错误或其他任何原因。

错误在哪里?

1 个答案:

答案 0 :(得分:1)

如果我正确理解您,您希望获取并操纵通过has_one关系与Object1记录相关的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();
    }
}