calderawp/caldera-forms-query

Caldera Forms 查询库

0.3.2 2018-07-10 21:12 UTC

This package is auto-updated.

Last update: 2024-09-19 13:17:34 UTC


README

Build Status

此库为开发者提供了一种友好的方式来查询或删除 Caldera Forms 的条目数据。

为什么?

安装

composer require calderawp/caldera-forms-query

要求

  • WordPress - 已测试 4.8,最新版本和 trunk
  • PHP 5.6+ - 已测试 PHP 7.1 和 7.2
  • Caldera Forms 1.6.0+ - 已测试 Caldera Forms 1.6.1 测试版 1

状态

  • 正常工作
  • 尚不支持按日期范围选择/删除
  • 需要更好地清理预准备的 SQL。

用法

基本查询

/**
 * Examples of simple queries
 *
 * Using the class: \calderawp\CalderaFormsQuery\Features\FeatureContainer
 * Via the static accessor function: calderawp\CalderaFormsQueries\CalderaFormsQueries()
 */

/** First make the function usable without a full namespace */
use function calderawp\CalderaFormsQueries\CalderaFormsQueries;

/** Do Some Queries */
//Select all data by user ID
$entries = CalderaFormsQueries()->selectByUserId(42);

//Select all entries that have a field whose slug is "email" and the value of that field's value is "delete@please.eu"
$entries = CalderaFormsQueries()->selectByFieldValue( 'email', 'delete@please.eu' );

//Select all entries that do not have field whose slug is "size" and the value of that field's value is "big"
$entries = CalderaFormsQueries()->selectByFieldValue( 'size', 'big', false );

//Delete all data by Entry ID
CalderaFormsQueries()->deleteByEntryIds([1,1,2,3,5,8,42]);

//Delete all data by User ID
CalderaFormsQueries()->deleteByUserId(42);

分页查询

selectByFieldValue 功能方法默认将查询限制为 25。您可以通过第 4 和第 5 个参数设置页码和限制。

/**
 * Examples of simple queries
 *
 * Using the class: \calderawp\CalderaFormsQuery\Features\FeatureContainer
 * Via the static accessor function: calderawp\CalderaFormsQueries\CalderaFormsQueries()
 */

/** First make the function usable without a full namespace */
use function calderawp\CalderaFormsQueries\CalderaFormsQueries;

/** Do Some Queries */
//Select all entries that have a field whose slug is "email" and the value of that field's value is "delete@please.eu"
//The first 25 entries
$entries = CalderaFormsQueries()->selectByFieldValue( 'email', 'delete@please.eu' );
//The second 25 entries
$entries = CalderaFormsQueries()->selectByFieldValue( 'email', 'delete@please.eu', true, 2 );
//Get 5th page, with 50 results per page
$entries = CalderaFormsQueries()->selectByFieldValue( 'email', 'delete@please.eu', true, 5, 50 );

构造其他查询

功能容器提供了辅助方法,允许执行像上面列出的简单查询。它还公开了底层的查询生成器。

您可以使用 getQueries() 方法访问任何生成器。例如

 $featureContainer = \calderawp\CalderaFormsQueries\CalderaFormsQueries();
    $fieldValue = 'X@x.com';
    $formId = 'CF5afb00e97d698';
    $count = Caldera_Forms_Entry_Bulk::count($formId );

    $entrySelector = $featureContainer
        ->getQueries()
        ->entrySelect();

is() 辅助方法

这是一个更完整的示例,展示了选择条目值,其中 slug 为 primary_email 的字段是 roy@hiroy.club,slug 为 first_name 的字段是 Mike。它还使用 is() 方法添加 WHERE 语句,以及使用 addPagination() 方法查询第二页的结果,每页 50 个结果。

    $featureContainer = \calderawp\CalderaFormsQueries\CalderaFormsQueries();
    $entrySelector = $featureContainer
        ->getQueries()
        ->entrySelect()
        ->is( 'primary_email', 'roy@hiroy.club' )
        ->is( 'first_name', 'Mike' )
        ->addPagination(2,50 );

in() 辅助方法

此示例展示了选择所有条目值,其中条目 ID 在一个条目 ID 数组中。

    $featureContainer = \calderawp\CalderaFormsQueries\CalderaFormsQueries();
    $entrySelector = $featureContainer
        ->getQueries()
        ->entrySelect()
        ->in( 'entry_id', [ 42, 3 ] );

查询生成器

所有查询生成器扩展了 \calderawp\CalderaFormsQuery\QueryBuilder 类并实现 \calderawp\CalderaFormsQuery\CreatesSqlQueries

查询生成器负责创建 SQL 查询。它们不执行 sequel 查询。

选择查询生成器

选择查询生成器扩展 \calderawp\CalderaFormsQuery\Select\SelectQueryBuilder 并实现 \calderawp\CalderaFormsQuery\Select\DoesSelectQuery\calderawp\CalderaFormsQuery\Select\DoesSelectQueryByEntryId

SelectQueryBuilder 的有用方法

  • in()

使用查询生成器执行 SQL 查询

SELECT

FeatureContainergetQueries() 方法返回一个 calderawp\CalderaFormsQuery\Features\Queries 实例。当我们传递一个 SelectQueryBuilder 给它时,它提供了一个 select 方法,返回一个包含 stdClass 对象的结果数组。

        $featureContainer = \calderawp\CalderaFormsQueries\CalderaFormsQueries();
        $entryValueSelect = $featureContainer
            ->getQueries()
            ->entryValuesSelect()
            ->is( 'size', 'large' );

       $featureContainer->getQueries()->select( $entryValueSelect );

您也可以作为字符串访问生成的 SQL。

  $featureContainer = \calderawp\CalderaFormsQueries\CalderaFormsQueries();
        $sql = $featureContainer
            ->getQueries()
            ->entryValuesSelect()
            ->is( 'size', 'large' )
            ->getPreparedSql();

DELETE

Queries 类还有一个 delete 方法,我们可以传递一个 DeleteQueryBuilder 来执行数据库的 DELETE 查询。

开发

安装

需要 git 和 Composer

  • git clone git@github.com:calderawp/caldera-forms-query.git
  • cd caldera-forms-query
  • composer install

本地开发环境

包含并提供了本地开发环境。它用于集成测试。需要 Composer、Docker 和 Docker Compose。

  • 安装本地环境和 WordPress "单元" 测试套件
  • composer wp-install

现在您应该在 https://:8888/ 有 WordPress

  • (重新)启动服务器:一旦服务器安装完成,您可以重新启动它
  • composer wp-start

测试

安装

按照上述步骤创建本地开发环境,然后您可以使用下一节中列出的命令。

使用

从插件的根目录运行以下命令。

  • 运行所有测试、代码检查和修复
    • composer tests
  • 运行单元测试
    • composer unit-tests
  • 运行 WordPress 集成测试
    • composer wp-tests
  • 修复所有代码格式
    • composer formatting

WordPress 和 Caldera Forms 依赖

目前,此库依赖于 Caldera Forms 和 WordPress(用于 \WPDB)。当 caldera-interop 与此工具集成时,这将发生变化,可能会出现破坏性更改。

其他事项。

版权所有 2018 CalderaWP LLC。许可证:GPL v2 或更高版本。