问题描述
我将 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' }
,它会抛出属性不存在或配置错误的异常。有人知道如何解决这个问题吗?
解决方法
您可以使用静态过滤器(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"