heyday/silverstripe-querybuilder

在 SilverStripe 中构建复杂且可组合的查询以检索 ArrayList

安装: 1,485

依赖者: 0

建议者: 0

安全: 0

星星: 6

关注者: 27

分支: 2

开放问题: 0

类型:silverstripe-module

1.3.3 2019-11-25 22:01 UTC

This package is auto-updated.

Last update: 2024-08-29 04:08:31 UTC


README

提供了一种在 SilverStripe 中创建灵活且可重用查询的方法。类似于搜索过滤器。

安装(使用 composer)

使用 composer 安装很简单,

在 SilverStripe 项目的根目录下创建或编辑一个 composer.json 文件,并确保以下内容存在。

{
    "require": {
        "heyday/silverstripe-querybuilder": "1.2.*"
    }
}

完成此步骤后,在终端或类似的环境中导航到 SilverStripe 的根目录,并运行 composer installcomposer update,具体取决于您是否已经使用 composer。

概述

查询构建器是围绕 SQLQuery 对象的包装器,提供了两种修改 SQLQuery 对象的方法

  • Heyday\QueryBuilder\Interfaces\QueryModifierInterface
  • 闭包,具有函数签名 SQLQuery $query, array $data, QueryBuilderInterface $queryBuilder

用法

实现 QueryModifierInterface

这是一个非常通用的修饰符,您构建的修饰符可能更适合您的模型。

use Heyday\QueryBuilder\Interfaces\QueryBuilderInterface;
use Heyday\QueryBuilder\Interfaces\QueryModifierInterface;

class LikeModifier extends QueryModifierInterface
{
	protected $column;
	public function __construct($column)
	{
		$this->column = $column;
	}
	public function modify(\SQLQuery $query, array $data, QueryBuilderInterface $queryBuilder)
	{
		if (isset($data['search']) && $data['search']) {
			$query->addWhere("{$this->column} LIKE '%{$data['search']}%'");
		}
	}
}

使用修饰符与 QueryBuilder

use Heyday\QueryBuilder\QueryBuilder;

$qb = new QueryBuilder(
	'SiteTree',
	[new LikeModifier('SiteTree.Title')],
	['search' => $request->getVar('q')]
);

foreach ($qb as $page) {
	// Do something with page
}

许可证

SilverStripe 查询构建器遵循 MIT 许可证