phpactiverecord获取下一个ID

时间:2013-04-26 15:12:44

标签: php phpactiverecord

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

目前我做了:

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

}

有更优雅的方式吗?

1 个答案:

答案 0 :(得分: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();
 }

如果在类代码中使用模板,那么使用模板也很尴尬:P。 如果您没有github的最新版本,此代码可能会失败,因为之前有一个bug,其中after_create不知道该对象已经保存。