tbn / query-builder-repository-generator-bundle
关于此包最新版本(2.1.0)的许可证信息不可用。
在仓库中为queryBuilder生成过滤器
2.1.0
2024-05-13 14:06 UTC
Requires
- php: ^8.1
- doctrine/doctrine-bundle: ^2.10
- doctrine/orm: ^2.10
- symfony/framework-bundle: ^5.4|^6.0|^7.0
- symfony/maker-bundle: ^1.7
- symfony/twig-bundle: ^5.4|^6.0|^7.0
Requires (Dev)
- nyholm/symfony-bundle-test: ^3.0
- phpunit/phpunit: ^10.3
- symfony/class-loader: 2.3.*
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