padam87 / search-bundle
该包已被废弃,不再维护。没有推荐替代包。
Symfony2 SearchBundle
v2.0.1
2014-04-02 10:48 UTC
Requires
- php: >=5.3.3
- doctrine/doctrine-bundle: *
- doctrine/orm: *
- symfony/symfony: >2.1.0
Requires (Dev)
- phpunit/phpunit: ~3.7
- satooshi/php-coveralls: dev-master
README
搜索包
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(),
);