此包已被废弃且不再维护。作者建议使用 jaqb/jaqb 包。

基于 PDO 的另一个查询构建器

1.6 2020-06-06 21:26 UTC

This package is auto-updated.

Last update: 2020-06-06 21:27:35 UTC


README

Latest Stable Version Software License Build Status Coverage Status Scrutinizer Code Quality Total Downloads

JAQB: PHP 的另一个查询构建器(发音为 "jacob")

要求

  • PHP 5.6+, PHP 7+
  • PDO

安装

安装 JAQB 最简单的方式是使用 composer

composer require jaqb/jaqb

配置

连接管理器接受一个连接配置数组。使用连接管理器,您可以方便地管理一个或多个数据库连接。连接在配置中通过一个唯一的 ID 进行引用。

use JAQB\ConnectionManager;

$config = [
    'main' => [
        'type' => 'mysql',
        'host' => 'localhost',
        'name' => 'dbname'
        'username' => 'myuser',
        'password' => 'mypassword',
        'options' => [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
        ]
    ],
    'sqlite' => [
        'dsn' => 'sqlite:mydb.sqlite'
    ]
];

$manager = new ConnectionManager($config);

提供现有的 PDO 对象

您还可以手动添加现有的 PDO 连接。

use JAQB\ConnectionManager;
use JAQB\QueryBuilder;

$pdo = new PDO('...');
$connection = new QueryBuilder($pdo);
$manager = new ConnectionManager();
$manager->add('users', $connection); 

使用

检索连接

您可以通过在连接管理器上调用 get() 并传入连接的 ID 来检索连接。

$db = $manager->get('main');

如果只有一个连接,您也可以将其作为默认值获取。

$db = $manager->getDefault();

选择查询

$db->select('*')
   ->from('Movies')
   ->join('Directors', 'Directors.id = Movies.director_id')
   ->where('Directors.name', 'Quentin Tarantino')
   ->between('year', 1990, 2015)
   ->groupBy('category')
   ->having('rating', 4.5, '>')
   ->orderBy('rating', 'DESC')
   ->limit(100, 10)
   ->all();

插入查询

$db->insert(['name' => 'Catcher in the Rye', 'author' => 'JD Salinger'])
   ->into('Books')
   ->execute();

更新查询

$db->update('Users')
   ->where('uid', 10)
   ->values(['first_name' => 'JAQB', 'website' => 'example.com'])
   ->orderBy('uid', 'ASC')
   ->limit(100)
   ->execute();

删除查询

$db->delete('Users')
   ->where('last_login', strtotime('-1 year'), '<')
   ->limit(100)
   ->orderBy('last_login', 'ASC')
   ->execute();

纯 SQL 查询

$db->raw('SHOW COLUMNS FROM `Events`')
   ->execute();

执行查询

以下方法可用于执行查询并检索结果

  • execute() - 返回一个 PDOStatement
  • all() - 返回所有行
  • one() - 返回第一行
  • column($index = 0) - 返回每行的特定列
  • scalar($index = 0) - 返回第一行的特定列

此外

  • rowCount() - 返回受最后执行语句影响的行数
  • $db->lastInsertId() - 返回最后插入的 ID

事务

查询支持 PDO 事务

$db->beginTransaction();

try {
    for ($i = 1; $i <= 10; $i++) {
        $db->insert(['name' => "Item # $i"])
           ->into('Items')
           ->execute();
    }
    
    $db->commit();
} catch (Exception $e) {
    $db->rollBack();
}

构建查询

如果您只想构建一个查询而不执行它,则只需使用 build()getValues() 将检索任何 有序问号参数

测试

使用phpunit运行包含的测试

phpunit

贡献

请随时通过参与问题或提交拉取请求来贡献。:-)

许可协议

MIT许可协议(MIT)

版权所有 © 2015 Jared King

在此特此授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的任何人,免费、不可撤销地使用该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,以及允许向软件提供的人士这样做,前提是必须遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任源于合同、侵权或其他原因,以及该软件或其使用或以其他方式参与其中。