Realm DB Relationship - один ко многим - Как получить атрибуты как часть мастера, которые являются сводками связанных дочерних атрибутов - PullRequest
0 голосов
/ 08 мая 2018

Я объясню свой вопрос, используя USER -> TASK (1-user-can-have-many-tasks) в качестве примера.

В области я могу определить СУЩНОСТЬ ПОЛЬЗОВАТЕЛЯ, которая включает в себя список связанных задач.

Однако при запросе всех пользователей я также хочу прочитать как часть списка пользователей набор атрибутов для каждого пользователя, которые представляют собой сводки эквивалентных атрибутов в задачах для этого пользователя.

Например, я хочу прочитать всех пользователей и для каждого пользователя сообщить «Не выполнено», если какая-либо из связанных задач не выполнена. сообщить «Имеет вложение» для пользователя, если ЛЮБЫЕ задачи для этого пользователя имеют вложения.

В простом SQL с SQLLite я могу добиться этого эффекта, используя групповые конструкции и производные столбцы в моем наборе результатов, которые являются сводками реальных столбцов.

Как я могу сделать то же самое в Царстве. Любая помощь приветствуется.

Пример сущности:

User
{
  String userId
  String name
  List<Task> tasks
  **--> oustanding** (need to derive if any of the tasks in the task list is outstanding)
  **--> hasAttachments** (if any of the tasks in the task list has 
attachments)
}

Task
{ 
    String taskId
    boolean outstanding
    boolean hasAttachments
}

Примечание: неоплаченные и hasAttachments в сущности User не являются обязательными полями. Мне просто нужно получить их во время выполнения, в запросе или в виде динамических полей, если есть такая вещь

1 Ответ

0 голосов
/ 08 мая 2018

Хорошая новость заключается в том, что Realm поддерживает «запросы ссылок», которые технически переводятся как «имеет хотя бы одно из истинных значений X», что именно то, что вы ищете:

realm.where(User.class).equalTo("tasks.outstanding", true).findAll(); // users with at least 1 outstanding task

realm.where(User.class).equalTo("tasks.hasAttachments", true).findAll(); // users with at least 1 task that has attachments
...