kamandlou / php-query-builder
PHP 的 SQL 查询构建器
dev-main
2023-09-23 07:28 UTC
Requires
- php: 8.*
- ext-pdo: *
This package is auto-updated.
Last update: 2024-09-23 09:42:02 UTC
README
PHP SQL 查询构建器使用 PDO。它是一个快速且轻量级的库。
特性
- 创建健壮查询的简单接口
- 支持任何与 PDO 兼容的数据库
- 能够用少量代码构建复杂的 SELECT、INSERT、UPDATE & DELETE 查询
- 魔法方法的类型提示,在智能 IDE 中有代码补全
安装
Composer
安装 PHP 查询构建器首选方法是通过 composer。
运行以下命令安装 PHP 查询构建器
composer require kamandlou/php-query-builder
建立连接
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'password'); $db = DB::connection($pdo);
设置获取模式
$db = DB::connection($pdo)->setFetchMode(PDO::FETCH_ASSOC);
DB 类方法
setPrefix(string $prefix)
为所有表名设置前缀。
$db->setPrefix('db');
setSeparator(string $separator)
设置构建查询时使用的分隔符。
$db->setPrefix('db')->setSeparator('_'); // Result: db_tableName
CRUD 查询示例
SELECT
$db->table('users') ->select() ->where('id', '>', 100) ->orderByDesc('id') ->get();
$db->table('users') ->select('id', 'username') ->where('id', '>', 100) ->orderByDesc('id') ->get();
您可以使用 toSql
方法获取纯 SQL 查询。
$db->table('users') ->select('id', 'username') ->where('id', '>', 100) ->orderByRand() ->toSql();
Select 类方法
Select 类提供了构建 SQL SELECT 查询的方法。
select(...$columns)
指定要选择的列。
$db->select('id', 'name') // OR $db->select() // If you don't specify any columns it selects all columns
where($column, $operator, $value)
向查询中添加 WHERE 条件。
$db->select()->where('age', '>', 18);
$column
- 要比较的列名。$operator
- 比较运算符 (>, <, =, <>, 等)。$value
- 要与列比较的值。
orWhere($column, $operator, $value)
向查询中添加 OR WHERE 条件。
$db->select()->orWhere('age', '>', 18);
$column
- 要比较的列名。$operator
- 比较运算符 (>, <, =, <>, 等)。$value
- 要与列比较的值。
toSql()
获取生成的 SQL 查询字符串。
$sql = $db->select()->orWhere('age', '>', 18)->toSql(); echo $sql;
first()
执行查询并返回第一行结果。
$user = $db->table('users')->select('id', 'name')->where('id', '=', 5)->first();
get()
执行查询并返回所有结果行。
$users = $db->table('users')->select('id', 'name')->where('id', '>', 100)->get();
orderBy(string $column, string $direction = 'ASC')
设置查询的 ORDER BY 子句。
$users = $db->table('users')->select('id', 'name', 'age')->orderBy('age', 'DESC')->get();
$column
- 要排序的列名。$direction
- 排序方向,'ASC' 或 'DESC'。
orderByDesc(string $column)
设置 ORDER BY 子句以按列降序排序。
$users = $db->table('users')->select('id', 'name', 'age')->orderByDesc('age')->get();
$column
- 要排序的列名。
orderByRand()
设置 ORDER BY 为随机顺序。
$users = $db->table('users')->select()->orderByRand()->get();
count()
获取记录数。
$count = $db->table('users')->select() ->where('id','>',3) ->where('id', '<', 100000) ->count(); // OR $count = $db->table('users')->select()->count();