jaqb/jaqb

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

1.6 2020-06-06 21:26 UTC

This package is auto-updated.

Last update: 2024-09-07 06:32:53 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); 

用法

检索连接

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

$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

贡献

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

许可

MIT许可(MIT)

版权所有 © 2015 Jared King

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

上述版权声明和本许可声明应包含在软件的副本或实质性部分中。

本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、针对特定目的的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论此类责任是基于合同、侵权或其他方式,无论此类责任是否源于、源于或与软件或软件的使用或其他交易有关。