Подход, который вы выбрали, - это способ, которым react-admin
реализовал его для получения объединенных данных по внешнему ключу, и ИМХО, это не так уж и много, потому что на уровне базы данных вам все еще нужно запросить другую таблицу.
Согласно документации ,
есть дополнительное свойство ответа для формата ответа GET_MANY_REFERENCE
, называемое total
:
GET_MANY_REFERENCE { data: {Record[]}, total: {int} }
Компонент поля ReferenceManyField
использует этот формат ответа для извлечения данных, используя идентификатор текущей записи в качестве внешнего ключа (родительского идентификатора) для указанного ресурса.
Копание в react-admin
код последней версии 2.9.0 Я вижу, что ReferenceManyField
передает реквизиты своим детям, и вам решать, как вы обрабатываете данные (например, List
, DataGrid
) и одним из реквизитов является total
(количество записей), которое по умолчанию передается компоненту Pagination
.
Вы можете создать свой собственный простой функциональный компонент для обработки этих реквизитов, если вы не хотите использовать что-либо еще:
import React from 'react';
const UserTotal = props => <div>User count: {props.total}</div>;
export default UserTotal;
И использование вашего справочного поля:
<ReferenceManyField
label="Users"
reference="users"
target="uuid_organization"
sort={{ field: 'email', order: 'ASC' }}
>
<UserTotal />
</ReferenceManyField>