0

我正在使用phpactiverecord。我有一个具有and的Order对象。在数据库上,是主键 int 和自动增量。是一个 varchar 并且是唯一的,由 id 和其他字符组成。问题是我需要在保存之前设置代码值,为此,我需要获取 id。idcodeidcode

目前我做了:

class Order extends ActiveRecord\Model{
    function save() {
        if (parent::save()): // I save all data
            $this->code = "{$this->id}w"; // Once it was saved I get the id
            parent::save(); // I save the code
            return true;
        endif;
        return false;
    }

}

有没有更优雅的方法来做到这一点?

4

1 回答 1

1

从技术上讲,您不应该以这种方式覆盖 save() ,因为即使在这种情况下您正在更改方法签名(它是public function save($validate=true))。您的案例有很多可能的回调。对于您的情况,更好的方法是:

 public static $after_create = array('after_create');
 public function after_create()
 {
    $this->code = $this->id.'w';
    $this->save();
 }

此外,在类代码中使用模板 if else 也很尴尬:P。如果您没有来自 github 的最新版本,则此代码可能会失败,因为之前在 after_create 不知道该对象已保存的地方存在一个错误。

于 2013-04-29T15:59:09.867 回答