padam87/search-bundle

该包已被废弃,不再维护。没有推荐替代包。

Symfony2 SearchBundle

v2.0.1 2014-04-02 10:48 UTC

This package is auto-updated.

Last update: 2022-02-01 12:22:21 UTC


README

Build Status Coverage Status Scrutinizer Quality Score SensioLabsInsight Latest Stable Version Total Downloads Latest Unstable Version License

搜索包

Symfony2的搜索包。可以直接使用实体和集合进行搜索。非常适合处理复杂的搜索表单。

1. 示例

1.1 简单示例

$fm = $this->get('padam87_search.filter.manager');
$filter = new Filter($data, 'YourBundle:Entity', 'alias');
$qb = $fm->createQueryBuilder($filter);

$data可以是数组、实体或甚至是 doctrine 的集合。

你可以添加自己的转换器来处理任何类型的数据。

1.2 连接

$fm = $this->get('padam87_search.filter.manager');
$filter1 = new Filter($data1, 'YourBundle:Entity1', 'alias1');
$filter2 = new Filter($data2, 'YourBundle:Entity2', 'alias2');
$qb = $fm->joinToQueryBuilder($filter2, $fm->createQueryBuilder($filter1), 'associationName');

'associationName'是实体中关系的名称,例如 'users'

1.3 集合值关联

$fm = $this->get('padam87_search.filter.manager');
$filter = new Filter($data, 'YourBundle:Entity', 'alias');
$qb = $fm->createQueryBuilder($filter);

$data是实体时,它可以有 *ToMany 关联。默认情况下,该包假设集合元素之间存在 OR 关系。要改变这一点,你可以使用$fm->createQueryBuilder的第二个参数。

$fm = $this->get('padam87_search.filter.manager');
$filter = new Filter($data, 'YourBundle:Entity', 'alias');
$qb = $fm->createQueryBuilder($filter, array(
    'relationName' => 'AND'
));

1.4 操作符

$data = array(
    'integerField>=' => 10
    'stringFiled' => 'A*'
);
$filter = new Filter($data, 'YourBundle:Entity', 'alias');

该包将在字段名称和值中搜索操作符,并使用适当的表达式(Expr)。

为了更友好且与实体兼容,你可以在过滤器的第四个参数中设置默认操作符。

$filter = new Filter($data, 'YourBundle:Entity', 'alias', array(
    'integerField' => '>='
));

2. 安装

2.1. Composer

"padam87/search-bundle": "2.0.*",

2.2. AppKernel

$bundles = array(
	...
    new Padam87\SearchBundle\Padam87SearchBundle(),
);