PHPackages                             watsonhaw/think-orm - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. watsonhaw/think-orm

ActiveLibrary[Database &amp; ORM](/categories/database)

watsonhaw/think-orm
===================

the PHP Database&amp;ORM Framework

v0.1.0(2w ago)00Apache-2.0PHPPHP &gt;=8.1CI passing

Since Aug 3Pushed 2w agoCompare

[ Source](https://github.com/watsonhaw5566/think-orm)[ Packagist](https://packagist.org/packages/watsonhaw/think-orm)[ RSS](/packages/watsonhaw-think-orm/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (1)Dependencies (17)Versions (157)Used By (0)

ThinkORM
========

[](#thinkorm)

基于PHP8.0+ 和PDO实现的ORM，支持多数据库，3.0版本主要特性包括：

- 基于PDO和PHP强类型实现
- 支持原生查询和查询构造器
- 自动参数绑定和预查询
- 简洁易用的查询功能
- 强大灵活的模型用法
- 支持预载入关联查询和延迟关联查询
- 支持多数据库及动态切换
- 支持分布式及事务
- 支持断点重连
- 支持`JSON`查询
- 支持数据库日志
- 支持`PSR-16`缓存及`PSR-3`日志规范
- **支持乐观锁（Optimistic Lock）** 处理并发更新冲突
- **支持模型字段加密（Encryption）** 自动加密/解密敏感字段

安装
--

[](#安装)

```
composer require watsonhaw/think-orm

```

文档
--

[](#文档)

详细参考 [ThinkORM开发指南](https://doc.thinkphp.cn/@think-orm)

乐观锁使用指南
-------

[](#乐观锁使用指南)

乐观锁用于处理并发场景下的数据更新冲突问题。其原理是通过在数据表中增加一个版本号字段， 在更新数据时校验版本号是否一致，如果不一致则抛出异常，表示数据已被其他进程修改。

### 数据库准备

[](#数据库准备)

首先需要在数据表中添加版本号字段（字段名可自定义，默认为 `lock_version`）：

```
-- 使用默认字段名 lock_version
ALTER TABLE `your_table` ADD COLUMN `lock_version` INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号';

-- 或者使用自定义字段名，比如 version
ALTER TABLE `your_table` ADD COLUMN `version` INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号';
```

### 模型中使用乐观锁

[](#模型中使用乐观锁)

在模型类中引入 `OptimLock` trait：

```
