【问题标题】:Symfony, easyadmin filter via relationSymfony,easyadmin通过关系过滤
【发布时间】:2021-01-12 14:02:33
【问题描述】:

我将 Easyadmin 捆绑包用于 Web 应用程序的管理部分,并且我使用如下配置:

easy_admin:
  entities:
    Payment:
      class: App\Entity\Payment
      controller: App\Controller\CompanyController
      label: 'payments'
      list:
        item_permission: ['ROLE_ADMIN','ROLE_COMPANY_OWNER','ROLE_COMPANY_ACCOUNTANT']
        actions: ['show', '-delete', '-edit', '-new']
        collapse_actions: true
        title: 'Payments'
        filters:
          - { property: 'id', label: 'id' }
          - { property: 'type', label: 'type' }
          - { property: 'user', label: 'user' }
          ...

问题是我无法通过实体关系设置过滤器,例如{ property: 'user.company', label: 'company' },它会抛出属性不存在或配置错误的异常。有人知道如何解决这个问题吗?

【问题讨论】:

  • 用户和公司之间的关系是什么,我的意思是 ManyToOne ManyToMany ...查看symfony.com/doc/current/bundles/EasyAdminBundle/filters.html
  • 是的,用户和公司之间的关系是多对一。我已阅读官方文档,但除了创建完全自定义的过滤器外,我什么也没找到

标签: symfony filter relation easyadmin


【解决方案1】:

您可以使用静态过滤器(dql_filter 选项) dql_filter 选项允许您定义传递给 Doctrine 查询的 WHERE 子句的条件,用于获取显示在列表和搜索视图中的实体。

例如

easy_admin:
    entities:
        VipCustomers:
            class: App\Entity\User
            list:
                dql_filter: 'entity.budget > 100000'
        RegularCustomers:
            class: App\Entity\User
            list:
                dql_filter: 'entity.budget <= 100000'

在你的情况下,我认为你可以做这样的事情。

easy_admin:
  entities:
    Payment:
      class: App\Entity\Payment
      controller: App\Controller\CompanyController
      label: 'payments'
      list:
        item_permission: ['ROLE_ADMIN','ROLE_COMPANY_OWNER','ROLE_COMPANY_ACCOUNTANT']
        actions: ['show', '-delete', '-edit', '-new']
        collapse_actions: true
        title: 'Payments'
        dql_filter: "user.company"
           

【讨论】:

    猜你喜欢
    • 2017-12-24
    • 1970-01-01
    • 2022-12-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 2021-05-21
    • 2015-12-20
    相关资源
    最近更新 更多