PHPackages                             puweiyuer/sworm - 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. puweiyuer/sworm

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

puweiyuer/sworm
===============

Swoole asynchronous MySQL

v1.0.4(8y ago)012MITPHPPHP &gt;=5.4.0

Since Mar 29Pushed 8y ago1 watchersCompare

[ Source](https://github.com/puwei3402023/sworm)[ Packagist](https://packagist.org/packages/puweiyuer/sworm)[ RSS](/packages/puweiyuer-sworm/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (2)Used By (0)

Sworm - 基于Swoole的异步MySQL数据库ORM框架
================================

[](#sworm---基于swoole的异步mysql数据库orm框架)

[![License](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](http://opensource.org/licenses/MIT)[![PRs Welcome](https://camo.githubusercontent.com/e4feb279dc7b8718b4b2e997e758ab7c693d49a2f13c6c7cdf77504bb4274df6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f6865696b657a792f53776f726d2e737667)](https://github.com/heikezy/Sworm/issues)[![GitHub stars](https://camo.githubusercontent.com/1b332f124363ce46958791a09af2d3938789bcbf75219407579cede4dfa2ff8e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6865696b657a792f53776f726d2e737667)](https://github.com/heikezy/Sworm)[![GitHub forks](https://camo.githubusercontent.com/ec620f7cf12a4b236cdb941321fd9ac5db60cdceb0e18e6a414de329ebef9818/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f6865696b657a792f53776f726d2e737667)](https://github.com/heikezy/Sworm)

Sworm是一个基于Swoole的异步MySQL调用的ORM数据库框架。该框架封装了swoole\_mysql，API与NotORM很相似。使用Sworm能更加轻松地生成查询语句，使代码结构更加清晰，返回更加规范。 任何问题 QQ: 529189858 或者 mailto:

环境要求
----

[](#环境要求)

Sworm的至少工作在以下环境:

- PHP 5.3.10 +
- Swole 1.7 +

快速入门
----

[](#快速入门)

### 初始化

[](#初始化)

在使用Sworm前，请确保已先include源码包根目录下的Sworm.php

```
$mySworm = new Sworm();
```

### 连接

[](#连接)

```
$server = array(
     'host' => '192.168.56.102',
     'port' => 3306,
     'user' => 'test',
     'password' => 'test',
     'database' => 'test',
     'charset' => 'utf8', //指定字符集
     'timeout' => 2,  // 可选：连接超时时间（非查询超时时间），默认为SW_MYSQL_CONNECT_TIMEOUT（1.0）
	'prefix' => 'sw_', //可选：表前缀
     'debug' => true //调试模式，开启会在执行查询时输出查询语句
);

$mySworm->connect($server, function($ret){
	if($ret->status){
		printf("连接成功\n");
	}else{
		var_dump($ret->errorCode, $ret->errorMsg);
	}
});
```

### 断开连接

[](#断开连接)

```
$mySworm->disconnect();
```

### 徒手Query

[](#徒手query)

```
$mySworm->query("SELECT * FROM sw_user WHERE id = '1'", function($ret){
	if($ret->status){
		var_dump($ret->result);
	}else{
		var_dump($ret->errorCode, $ret->errorMsg);
	}
});
```

### 获取表对象

[](#获取表对象)

成员属性方式获取

```
$user = $mySworm->user;
```

table方法获取

```
$user = $mySworm->table('user');
```

\*\*注意：\*\*这里表名前会自动加上connect时填写的prefix前缀参数。则实际上这里访问的表是sw\_user。

### 表对象：基本操作

[](#表对象基本操作)

以下方法使用没有先后顺序限制，Sworm会在最终查询时自动生成正确的顺序。

(1) SELECT

```
$user->select("username, password, gender")
//或者
$user->select(['username', 'password', 'gender'])
```

(2) WHERE

```
//直接填写完整WHERE语句（需手动进行过滤，不推荐）
$user->where("id = '2' AND username = 'yeahyeah'")

//使用预处理占位符
$user->where("id = ? AND username = ?", 2, 'yeahyeah')

//使用数组
$user->where(array(
	'id'=>2,
	'username'=>'yeahyeah'
))

/*数组的更多高级用法*/

//WHERE id IN ('1','2','3')
$user->where(array(
	'id'=>new Sworm_In([1,2,3])
))

//WHERE username LIKE '%张%'
$user->where(array(
	'id'=>new Sworm_Like('%张%')
))
```

同理还有Sworm\_NotIn、Sworm\_NotLike、Sworm\_RegExp(正则表达式)、Sworm\_Literal(原式)

(3) ORDER BY

单个字段排序：

```
//ORDER BY age
$user->order('age')
//ORDER BY age DESC
$user->order('age DESC')
```

多个字段排序：

```
//ORDER BY age
$user->order('age')
//ORDER BY id, age DESC
$user->order('id')->order('age DESC')
/*或者*/ $user->order('id, age DESC')
```

(4) LIMIT

按数量限制：

```
// LIMIT 10
$user->limit(10)
```

按数量和偏移量限制（请注意：先数量、再偏移量，与MySQL语句顺序相反）：

```
// LIMIT 2,10
$user->limit(10, 2)//从位置为2的记录开始取出10条记录
```

(5) GROUP BY和HAVING

不带HAVING：

```
// GROUP BY note
$user->group('note')
```

带HAVING：

```
// GROUP BY note HAVING age > 10
$user->group('note', 'age > 10')
```

### 表对象：查询 (Retrieve)

[](#表对象查询-retrieve)

(1) 获取结果数组：fetch

```
$user->select('username, password')
     ->where('id = ?', 1)
     ->fetch(function($ret){
	     if($ret->status){
		     var_dump($ret->result);//成功返回结果数组
	     }else{
			 var_dump($ret->errorCode, $ret->errorMsg);//失败返回错误码和错误信息
		 }
	 });
```

(2) 计数：count

```
$user->where('age >= ?', 18)
     ->count(function($ret){
	     if($ret->status){
		     var_dump($ret->result);//成功返回个数(int)
	     }else{
			 var_dump($ret->errorCode, $ret->errorMsg);//失败返回错误码和错误信息
		 }
	 });
```

(2) 求和：sum

```
$user->where('age < ?', 18)
     ->sum('money',function($ret){
	     if($ret->status){
		     var_dump($ret->result);//成功返回总和(number)
	     }else{
			 var_dump($ret->errorCode, $ret->errorMsg);//失败返回错误码和错误信息
		 }
	 });
```

(3) 最大值：max

```
$user->where('age < ?', 18)
     ->max('money',function($ret){
	     if($ret->status){
		     var_dump($ret->result);//成功返回最大值(number)
	     }else{
			 var_dump($ret->errorCode, $ret->errorMsg);//失败返回错误码和错误信息
		 }
	 });
```

(4) 最小值：min

```
$user->where('age < ?', 18)
     ->min('money',function($ret){
	     if($ret->status){
		     var_dump($ret->result);//成功返回最小值(number)
	     }else{
			 var_dump($ret->errorCode, $ret->errorMsg);//失败返回错误码和错误信息
		 }
	 });
```

### 表对象：插入 (Insert)

[](#表对象插入-insert)

```
$user->insert(array(
		'username'=>'yeahyeah',
		'password'=>'uNsJ2k8mQz'
	),function($ret){
    if($ret->status){
	    var_dump($ret->result);//成功返回影响的记录数
		printf("插入成功\n");
    }else{
		var_dump($ret->errorCode, $ret->errorMsg);//失败返回错误码和错误信息
	}
});
```

### 表对象：更新 (Update)

[](#表对象更新-update)

```
$user->where('id = ?', 1)
	 ->update(array(
			 'age'=>19,
			 'password'=>'lmaolmao'
		 ),function($ret){
		     if($ret->status){
			     var_dump($ret->result);//成功返回影响的记录数
			     printf("更新成功\n");
			 }else{
				 var_dump($ret->errorCode, $ret->errorMsg);//失败返回错误码和错误信息
		 }
	 });
```

### 表对象：删除 (Delete)

[](#表对象删除-delete)

```
$user->where('id = ?', 1)
	 ->delete(function($ret){
		     if($ret->status){
			     var_dump($ret->result);//成功返回影响的记录数
			     printf("删除成功\n");
			 }else{
				 var_dump($ret->errorCode, $ret->errorMsg);//失败返回错误码和错误信息
		 }
	 });
```

### 统一的回调函数参数 $ret

[](#统一的回调函数参数-ret)

Sworm使用回调函数实现异步，所有回调函数都应统一接受一个 `$ret` 参数。当请求执行完成后进行回调时，Sworm将会把请求结果封装成一个 `Sworm_Result` 对象并作为参数传递给回调函数。

`Sworm_Result` 对象的成员如下：

```
/* status
 * 表示请求是否成功，布尔值，真为成功，假为失败
 */
$ret->status
//或者
$ret->getStatus()

/* result
 * 表示请求结果，类型根据具体请求而定
 */
$ret->result
//或者
$ret->getResult()

/* errorCode
 * 表示失败错误码
 */
$ret->errorCode
//或者
$ret->getErrorCode()

/* errorMsg
 * 表示失败错误信息
 */
$ret->errorMsg
//或者
$ret->getErrorMsg()

/* sworm
 * 当前Sworm对象，方便回调函数闭包内使用
 */
$ret->sworm
```

### 事务

[](#事务)

```
$mySworm->begin(function($ret){
	$data = [...];
	$ret->sworm->user->update($data, function($ret){
		if($ret->status){
			//更新成功则提交事务
			$ret->sworm->commit(function($ret){
				echo "事务提交完成\n";
			});
		}else{
			//失败则回滚事务
			$ret->sworm->rollback(function($ret){
				echo "事务回滚完成\n";
			});
		}
	})
})
```

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2967d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/cf3bb25e970603db974bde797919ebafab4eb7d5366eeef895a22c78ab6aae6e?d=identicon)[puwei3402023](/maintainers/puwei3402023)

---

Top Contributors

[![puwei3402023](https://avatars.githubusercontent.com/u/15687715?v=4)](https://github.com/puwei3402023 "puwei3402023 (6 commits)")

---

Tags

mysqlswooleyii-2.0sworm

### Embed Badge

![Health badge](/badges/puweiyuer-sworm/health.svg)

```
[![Health](https://phpackages.com/badges/puweiyuer-sworm/health.svg)](https://phpackages.com/packages/puweiyuer-sworm)
```

###  Alternatives

[doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.

9.7k578.4M5.6k](/packages/doctrine-dbal)[kirschbaum-development/eloquent-power-joins

The Laravel magic applied to joins.

1.6k25.2M34](/packages/kirschbaum-development-eloquent-power-joins)[scienta/doctrine-json-functions

A set of extensions to Doctrine that add support for json query functions.

58523.9M36](/packages/scienta-doctrine-json-functions)[swlib/swpdo

Swoole Coroutine SQL component like PDO

6112.6k1](/packages/swlib-swpdo)[mix/database

Simple database for use in multiple execution environments, with support for FPM, Swoole, Workerman, and optional pools

1515.3k9](/packages/mix-database)[cytopia/mysqldump-secure

Secure mysqldump script with encryption, compression, logging, blacklisting and Nagios monitoring integration

1474.7k1](/packages/cytopia-mysqldump-secure)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
