我想添加一个不在我的实体中的列,需要一些自定义查询/子查询。例如,我有一个实体与用户分配给它,我想一列,将显示用户计数,但只有活跃的用户,或只有用户创建后,一些日期。我试图添加一个字段到查询生成器,但然后我得到了一个与“id作为数组”相关的错误。使用Easyadmin可以做到这一点吗?
对于测试,我试图添加任何字段查询生成器
public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder
{
[...]
$queryBuilder->addSelect('1 AS userCount');
return $queryBuilder;
}
字符串
但是我得到了错误Cannot read property "id" from an array. Maybe you intended to write the property path as "[id]" instead.
,我从AbstractCrudController::index中转储了paginator,看到结果现在几乎没有不同的结构
-results: ArrayIterator {#900 ▼
-storage: array:10 [▼
0 => array:2 [▼
0 => App\Entity\Company {#916 ▶}
"userCount" => 1
]
1 => array:2 [▼
0 => App\Entity\Company {#814 ▶}
"userCount" => 1
]
型
通常你只有实体的数组,而不是有实体和自定义值的数组的数组。
1条答案
按热度按时间vnzz0bqm1#
我找到了解决这个问题的办法。它并不完美,因为您需要查询数据库的每一行。而且,感觉有点黑客。
您可以添加模型中不存在的列,这很好。方法
setValue
不能接受callable,但foramtValue
可以,因此类似这样的方法工作得很好字符串
您需要将该值设置为
formatValue
的默认值才能工作。