2. 模型对象中:
use think\model\concern\OptimLock;
class ba
{
use OptimLock;
}
3. 控制器
$user = User::find(17);
$user->username="111";
$user->save();
这样不起作用,我把lock_version默认值改为1,但新增插入的时候还是lock_version还是为0,这种用法对吗???
看了think\model\concern\OptimLock源码:
protected function updateLockVersion(): void
{
$optimLock = $this->getOptimLockField();
if ($optimLock && $lockVer = $this->getOrigin($optimLock)) {
// 更新乐观锁
$this->set($optimLock, $lockVer + 1);
}
}
public function getWhere()
{
$where = parent::getWhere();
$optimLock = $this->getOptimLockField();
if ($optimLock && $lockVer = $this->getOrigin($optimLock)) {
$where[] = [$optimLock, '=', $lockVer];
}
return $where;
}保持上面lock_version字段定义,然后作了两个小修改:protected function updateLockVersion(): void
{
$optimLock = $this->getOptimLockField();
$lockVer = $this->getOrigin($optimLock);
if ($optimLock && $lockVer!==null) {
$this->set($optimLock, $lockVer + 1);
}
}
public function getWhere()
{
$where = parent::getWhere();
$optimLock = $this->getOptimLockField();
$lockVer = $this->getOrigin($optimLock);
if ($optimLock && $lockVer!==null) {
$where[] = [$optimLock, '=', $lockVer];
}
return $where;
}这样的话,每次更新记录,lock_version的值就能自动+1因为方便于升级,不想改动源码。
最佳答案