kekos/query-builder

小型 SQL 查询构建器

v2.0.1 2018-10-12 18:11 UTC

This package is auto-updated.

Last update: 2024-09-09 10:05:09 UTC


README

这是 Muhammad Usman 的 Pixie(一个轻量级 PHP 查询构建器)的分支,该库只支持 Pixie 的一部分功能。

  • 嵌套条件(用于连接的 WHERE、HAVING 和 ON)
  • 原始查询

查询构建器无法打开数据库连接或执行构建的查询。

安装

您可以通过 Composer 安装 Query Builder。

composer require kekos/query-builder

API

首先使用适配器配置 Query Builder

QueryBuilder::setAdapter(new MySqlAdapter());

适配器设置正确的净化字符。目前,库中提供了 MySqlAdapter

所有构建器都有一个 toSql() 方法,该方法返回 SQL 查询以及所有要绑定到查询的参数,用于预处理语句。

选择

$result = QueryBuilder::select(['user', 'u'])
  ->columns(['u.id', 'uname' => 'username'])
  ->join(['user_permission', 'p'], QB::raw('p.user_id = u.id'))
  ->limit(5, 0)
  ->groupby(['u.id'])
  ->orderby(['username ASC', 'firstname ASC'])
  ->where('firstname', '=', 'Christoffer')
  ->whereNot('u.id', 'IN', array(2))
  ->toSql();

$result 将是一个类型为 QueryBuilder\QueryBuilders\Raw 的对象。

嵌套的 wherehaving

$result = QueryBuilder::select('user')
  ->orderby('id')
  ->where(function($qb) {
    $qb->where('name', 'LIKE', '%chris%')
      ->whereOr('username', 'LIKE', '%chris%');
  })
  ->where('active', '=', 1)
  ->toSql();

插入

$result = QueryBuilder::insert('user')
  ->values([
      'username' => 'Kekos',
      'firstname' => 'Christoffer'
    ])
  ->toSql();

更新

$result = QueryBuilder::update('user')
  ->set([
      'username' => 'new_username',
      'firstname' => 'New firstname'
    ])
  ->where('id', '=', 2)
  ->toSql();

删除

$result = QueryBuilder::delete('user')
  ->where('id', '=', 2)
  ->toSql();

错误和改进

在 GitHub 问题中报告错误,或者随意发起 pull request :-)

许可证

MIT