kamandlou/php-query-builder

PHP 的 SQL 查询构建器

dev-main 2023-09-23 07:28 UTC

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();