elephpant/light-query-builder

Light Query Builder 是为简单应用设计的简单查询构建器,但它功能强大

1.1.15 2023-09-04 14:29 UTC

This package is auto-updated.

Last update: 2024-09-04 16:34:54 UTC


README

Maintainer Source Code PHP from Packagist Latest Version Software License Build Quality Score Total Downloads

首先,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 而不是使用问题跟踪器。

谢谢

鸣谢

许可

MIT 许可证(MIT)。请参阅 许可文件 以获取更多信息。