我正在使用phpactiverecord。我有一个Order
对象,它有一个id
和code
。在数据库上,id
是主键int和自动增量。 code
是一个varchar和唯一的,由id和其他字符组成。 问题是我需要在保存前设置代码值,为此,我需要获取该ID。phpactiverecord获取下一个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;
}
}
有没有更优雅的方式来做到这一点?
您可以在保存前添加id列的最大值('select max(id)作为table_name'的最大值),因此您不必执行两次保存。 – Pitchinnate 2013-04-26 15:15:42
我想到了它,但我没有找到用ActiveRecord来做到这一点的方法。 – 2013-04-26 15:17:42
这样做的安全方式是你目前如何做,不雅,但安全.. Pitchinnate评论可能有并发问题,你需要使用锁。 – Nelson 2013-04-26 15:18:28