tbn/query-builder-repository-generator-bundle

关于此包最新版本(2.1.0)的许可证信息不可用。

在仓库中为queryBuilder生成过滤器

2.1.0 2024-05-13 14:06 UTC

This package is auto-updated.

Last update: 2024-09-23 19:58:23 UTC


README

QueryBuilderRepositoryGeneratorBundle可以在仓库文件夹中生成仓库

这些函数允许使用查询构建器对实体的列进行筛选。

查看创建查询部分以获取示例。

安装

使用composer导入包

composer require --dev "tbn/query-builder-repository-generator-bundle"

在AppKernel中导入包

if ('dev' === $this->getEnvironment()) {
    $bundles[] = new Tbn\QueryBuilderRepositoryGeneratorBundle\QueryBuilderRepositoryGeneratorBundle();
}

配置

必填配置

添加您想要使用的包

	query_builder_repository_generator:
		bundles:
    		- "<<YourBundleName>>"

这些包将在包的仓库目录中生成仓库。请自行检查内容。

可选配置

	query_builder_repository_generator:
		templates:
			top_repository: "QueryBuilderRepositoryGeneratorBundle:Generator:TopRepositoryTemplate.html.twig"
			column: "QueryBuilderRepositoryGeneratorBundle:Generator:ColumnTemplate.html.twig"
			association: "QueryBuilderRepositoryGeneratorBundle:Generator:AssociationTemplate.html.twig"
			bottom_repository: "QueryBuilderRepositoryGeneratorBundle:Generator:BottomRepositoryTemplate.html.twig"
	mapping:
		- 'AppBundle\Entity\Member':
			querybuilder_name: 'memberEntity' # the name of the entity used in the queryBuilder

仓库扩展

您可以指定每个实体扩展的类。

	repositories_extensions:
		- "AcmeBundle\Entity\Item": #the entity class
			extension_class: "\\Gedmo\\Tree\\Entity\\Repository\\MaterializedPathRepository" #the class to extends

生成器使用的模板可以通过这些配置设置。

	top_repository => The beginning of the repository file
	column => The template used for each column
	extra_column => A custom template of your choice
	bottom_repository => The end of the repository file

额外列模板的变量如下

	'entity' => $tableName,
	'entityDql' => lcfirst($tableName),
	'column' => ucfirst($columnName),
	'columnDql' => $columnName

使用生成的仓库

在您的实体仓库中,扩展生成的仓库。

	class UserRepository extends UserRepositoryBase

您的仓库现在有一些预定义函数,如 "filterById","filterInId",适用于所有列。

创建查询

示例

	$qb = $this->createQueryBuilder('document');

	//filter on current user (where XX = YY)
   DocumentRepository::filterByUser($qb, $user);
   //filter on the extension list (where xxx IN () )
   DocumentRepository::filterInExtension($qb, $extensionList);

   //Join the tag entity
   $qb->join('document.tags', 'tag');
   //filter on the tag entity
   TagRepository::filterById($qb, $tagButton);

重新生成文件

运行命令

php app/console qbrg:generate