arraypress / edd-extended-query
增强Easy Digital Downloads (EDD) 数据库查询功能,支持SQL聚合函数(SUM、AVG、MAX等)和算术运算,使WordPress和PHP项目中的复杂数据分析和处理成为可能。
Requires
- php: ^7.4 || ^8.0
This package is auto-updated.
Last update: 2024-09-20 20:49:12 UTC
README
此类通过引入执行SUM、AVG、MAX、MIN等高级SQL聚合操作的能力,显著增强了Easy Digital Downloads (EDD)的查询功能。它通过基础EDD查询类,与BerlinDB的ORM功能相辅相成,简化了复杂数学查询,丰富了数据分析和处理任务。
功能
-
高级SQL聚合:将SQL聚合函数(SUM、AVG、MAX、MIN、GROUP_CONCAT、STDDEV、VAR_SAMP、VAR_POP)纳入EDD查询中,实现深入的数据汇总和分析。
-
算术运算支持:允许在查询中直接使用加、减、乘、除等运算符执行算术运算,简化数据库查询中的复杂计算。
-
数值列类型支持:提供一系列支持的数值SQL列类型,包括tinyint、smallint、mediumint、int、bigint、decimal、numeric、float、double、bit和real,实现精确的数据处理。
-
增强的分组能力:允许使用GROUP BY子句在单个查询请求中聚合多个总和(SUM)、平均值(AVG)和其他计算,针对不同的字段。该功能简化了数据分组和汇总,为数据集提供强大的见解,同时降低开销。
-
全面文档:附带详细的文档和用法示例,使开发者能够轻松实现并利用其在项目中的高级功能。
最低要求
- PHP 7.4
安装
扩展查询是一个开发者库,不是插件,这意味着您需要在您的项目中包含它。
您可以使用Composer
composer require arraypress/edd-extended-query
基本用法
// Require the Composer autoloader to enable class autoloading. require_once __DIR__ . '/vendor/autoload.php';
此类特别设计为作为基础,使开发者能够根据特定的数据检索和处理需求,在其Easy Digital Downloads (EDD)扩展或相关项目中扩展和定制自己的自定义查询类。通过从Extended_Query类继承,您可以轻松创建针对应用程序不同方面的专业查询处理程序,例如管理自定义任务请求。
以下是一个如何扩展Extended_Query类以构建自定义任务请求查询处理程序的示例。
use ArrayPress\Utils\EDD\Database\Extended_Query; /** * Extends the `Extended_Query` class to manage custom task requests. */ class Task_Requests extends Extended_Query { /** * Database table name. * * @var string */ protected $table_name = 'task_requests'; /** * Database table alias. * * @var string */ protected $table_alias = 'tr'; /** * Schema class for database structure. * * @var string */ protected $table_schema = '\\ArrayPress\\EDD\\Tasks\\Database\\Schemas\\Task_Requests'; /** * Singular item name. * * @var string */ protected $item_name = 'task_request'; /** * Plural items name. * * @var string */ protected $item_name_plural = 'task_requests'; /** * Class for item objects. * * @var string */ protected $item_shape = '\\ArrayPress\\EDD\\Tasks\\Objects\\Task_Request'; /** * Cache group name. * * @var string */ protected $cache_group = 'task_requests'; /** * Constructor to set up query parameters. * * @param array|string $query Query parameters. */ public function __construct( $query = [] ) { parent::__construct( $query ); } }
示例1:简单的聚合查询
计算特定产品ID的销售总额。
$query = new Task_Transactions([ 'function' => 'SUM', 'fields' => 'amount', 'product_id' => 123 // Assuming product ID is 123 ]); $total_sales = $query->get_result();
支持的聚合函数
- SUM:计算一组值的总和。用于查找总金额,如总销售额。
- AVG:计算一组值的平均值。用于确定平均交易规模或平均折扣。
- MAX:在一组值中找到最大值。用于查找最大的交易金额或最高的折扣。
- MIN:在一组值中找到最小值。用于识别最小的交易或售价最低的商品。
- GROUP_CONCAT: 将多行值连接成单个字符串。这特别适用于聚合基于文本的数据,如合并标签或类别。
- STDDEV: 计算一组值的标准差,有助于了解数据点(如交易金额)的方差。
- VAR_SAMP: 计算一组值的样本方差,提供从总体中样本变异性的见解。
- VAR_POP: 计算一组值的总体方差,提供对整个总体变异性的视图。
示例 2:带有算术运算的聚合函数
通过从销售额中减去税款来计算总利润。
$query = new Task_Transactions([ 'function' => 'SUM', 'fields' => ['amount', 'tax'], 'operator' => '-' // Subtracting discount from amount ]); $total_profit = $query->get_result();
支持的聚合函数
+, -, *, /, %
示例 3:按产品 ID 分组
按产品 ID 计算总销售额。
$query = new Task_Transactions([ 'function' => 'SUM', 'fields' => 'amount', 'groupby' => ['product_id'] ]); $sales_by_product = $query->get_result();
示例 4:按多列分组
按产品 ID 计算总销售额。
$query = new Task_Transactions([ 'function' => 'AVG', 'fields' => ['amount', 'discount'] 'groupby' => ['product_id'] ]); $sales_by_product = $query->get_result();
贡献
对这个库的贡献非常受重视。在 GitHub 上提出问题或提交拉取请求以修复错误或添加新功能。分享反馈和建议以供改进。
许可证:GPLv2 或更高版本
本程序是自由软件;您可以在自由软件基金会发布的 GNU 通用公共许可证的条款下重新分发和/或修改它;许可证的第 2 版,或者(根据您的选择)任何更高版本。
本程序的分发是希望它将是有用的,但没有任何保证;甚至没有对适销性或特定用途适用性的暗示保证。有关详细信息,请参阅 GNU 通用公共许可证。