jaqb / jaqb
基于PDO的另一个查询构建器
1.6
2020-06-06 21:26 UTC
Requires
- php: >=5.6.0
Requires (Dev)
- infuse/infuse: ~1.4
- mockery/mockery: ~1.0
- phpunit/phpunit: 5.7.*
- satooshi/php-coveralls: 1.0.0
README
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
特此授予任何获得本软件及其相关文档副本(“软件”)的人免费使用软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,以及允许向软件提供者提供软件的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的副本或实质性部分中。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、针对特定目的的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论此类责任是基于合同、侵权或其他方式,无论此类责任是否源于、源于或与软件或软件的使用或其他交易有关。