我正在尝试通过关系找到3个模型中的所有行。
用户1-M日 第1天M赛事
class User extends RealmObject {
String id;
RealmList<Day> days;
}
class Day extends RealmObject {
String id;
RealmList<Event> events;
}
class Event extends RealmObject {
String id;
String issueId;
}
我想通过issueId为当前用户获取所有事件;
例如:为id = 1的用户查找issueId =“TZB-1”的所有事件
我坚持这个:
User realmUser = mRealm.where(User.class).equalTo("id", userId).findFirst();
RealmList<Week> realmWeeks = realmUser.getWeeks();
我不想每周都检查一下。有没有办法在没有循环的情况下查找选定周的事件?
在SQL中它将是这样的:
select events.*
from users
left join days on users.id = days.user_id
left join events on days.id = events.day_id
where users.id = 1
and events.issue_id = "TZB-1"
更新1
作为临时解决方案,我发现了下一个例子:
手动跟踪用户模型的反向链接,如
class Event extends RealmObject {
String id;
String issueId;
User user;
}
允许以这种方式获取所有事件:
RealmResults<Event> events = realm.where(Event.class).equalTo("user.id", userId).equalTo("issueId", issueId).findAll();
但是这个解决方案让我改变了很多代码。