elephpant / light-query-builder
Light Query Builder 是为简单应用设计的简单查询构建器,但它功能强大
1.1.15
2023-09-04 14:29 UTC
Requires
- php: ^8.0
- ext-json: *
- ext-pdo: *
Requires (Dev)
- symfony/var-dumper: ^6.3
README
首先,Light Query Builder 非常棒!并且有了它,你可以构建任何你想要的 SQL 查询。
首先,Light Query Builder 非常棒。并且有了它,你可以构建任何你想要的 SQL 查询。
注意:然而,由于目前处于 BETA 版本,Light Query Builder 仅与 MySQL 驱动程序一起工作。很快它将支持其他驱动程序。
亮点
- 极其简单
- 读取、写入、更新和从数据库中删除数据
- 使用此组件构建所有你的查询
- 通过扩展它来提高此组件的功能
- 它与环境变量一起工作,以设置数据库的所有设置
- Composer 就绪且符合 PSR-2 标准(已准备好使用 Composer,且符合 PSR-2 标准)
安装前!
为了使用此组件,重要的是要使用类似于 vlucas/dotenv
的组件来设置你的环境变量;
DB_DRIVER="mysql" DB_PORT="3306" DB_HOST="your_database_host" DB_USER="root" DB_PASSWORD="passworddb" DB_NAME="elephpant"
安装
Light Query Builder 通过 Composer 提供
"elephpant/light-query-builder": "*"
或运行
composer require elephpant/light-query-builder
文档
快速入门
<?php require __DIR__ . "/vendor/autoload.php"; use ElePHPant\LightQueryBuilder; $lightQB = (new LightQueryBuilder())::setTable("users")->setFetchClass(stdClass::class);
选择
$select = $lightQB->select(); //Returns 'SELECT * FROM users' $selectWithColumns = $lightQB->select("fullname, email"); //Returns 'SELECT fullname, email FROM users';
条件
$where = $select->where("gender = :g", "g=male"); //Returns 'SELECT * FROM users WHERE gender = :g' -> working with bind param in PDO
AND OR BETWEEN 运算符
$where->and("id >=2")->or("id <= 10"); //Returns 'SELECT * FROM users WHERE gender = :g AND id >= 2 OR id <= 10' $between = $select->where("DATE(birth)")->between("'2020-03-17'", "'2020-04-01'"); //Returns 'SELECT * FROM users WHERE DATE(birth) BETWEEN '2020-03-17' AND '2020-04-01''
JOIN
$lightQB->join("fullname", "clients", "client.user=users.id", LightQueryBuilder::INNER_JOIN); //Returns 'SELECT fullname FROM users INNER JOIN clients ON client.user=users.id' $lightQB->join("fullname", "clients", "client.user=users.id", LightQueryBuilder::RIGHT_JOIN); //Returns 'SELECT fullname FROM users RIGHT JOIN clients ON client.user=users.id' //[...]
限制和偏移量
$select->limit(3)->offset(2); //Returns 'SELECT * FROM users LIMIT 3 OFFSET 2'
计数 */
$select->count(); //Returns all RowCounts of the consult
匹配
$lightQB->match("fullname, email", "Pedro", true); //Returns the result of alll users that match with the fullname or email with 'Pedro'.
编写你自己的查询
$lightQB->toQuery(" SELECT * FROM my_table WHERE id = 2 ")->limit(2)->offset(1);
CRUD
创建
$create = $lightQB->create(array(...));
获取数据(读取)
$select->get(); //Like that it'll bring only one result (first) [object] $select->get(true); //Like that it'll bring all results [array]
更新
$update = $lightQB->update(array(...), "WHERE id = :id", "id=2");
删除
$lightQB->delete("WHERE id = :id", "id=2");
调试
var_dump($lightQB->getFail(), $lightQB->getQuery());
LightQueryBuilder 可扩展
use ElePHPant\LightQueryBuilder; /** * Class MyQueryBuilder */ class MyQueryBuilder extends LightQueryBuilder { /** * @param string $column * @param string|null $condition * @return MyQueryBuilder */ public function avg(string $column, ?string $condition): self { $select = $this->select("AVG({$column})"); if ($condition) { return $select->where($condition); } return $select; } /** * @param string $columns * @param string $condition * @return MyQueryBuilder */ public function sum(string $columns, string $condition): self { $select = $this->select("SUM({$columns})"); if ($condition) { return $select->where($condition); } return $select; } }
贡献
请参阅 CONTRIBUTING 以获取详细信息。
支持
安全:如果您发现任何与安全相关的问题,请通过电子邮件 sergiodanilojr@hotmail.com 而不是使用问题跟踪器。
如果您发现任何与安全相关的问题,请通过电子邮件 sergiodanilojr@hotmail.com 而不是使用问题跟踪器。
谢谢
鸣谢
- Sérgio Danilo Jr.(开发者)
- 所有贡献者
许可
MIT 许可证(MIT)。请参阅 许可文件 以获取更多信息。