jaredtking / jaqb
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);
使用
检索连接
您可以通过在连接管理器上调用 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
在此特此授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的任何人,免费、不可撤销地使用该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,以及允许向软件提供的人士这样做,前提是必须遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任源于合同、侵权或其他原因,以及该软件或其使用或以其他方式参与其中。