【问题标题】:Filtering by nested RealmList item's attributes按嵌套 RealmList 项的属性过滤
【发布时间】:2018-01-12 16:22:23
【问题描述】:

我在编写查询来做我想做的事情时遇到问题——因为我不确定我的知识库是否可行,所以我想我会在这里问一个问题。我知道其他方法可以做到这一点,但我正在尝试编写一个查询,使我能够将查询用作托管对象,我提出的其他解决方案不会提供。问题来了:

我有一个 SiteInfo 和 Level 模型,其中包含 Site 以及相关的 Level:

open class SiteInfo(
    var orgId: Int = INVALID_ID,
    @PrimaryKey var id: Int = INVALID_ID,
    var site: Site = Site(),
    var levels: RealmList<Level> = RealmList()) : RealmObject()

open class Level(@PrimaryKey var id: Int = INVALID_ID,
                 var building: String = "",
                 var floor: String = "",
                 var site_id: Int = INVALID_ID,
                 var floorplan_url: String? = null) : RealmObject()

我正在尝试过滤级别列表不为空的站点,并且我已经做到了:

realm.where(SiteInfo::class.java).not().isEmpty("levels").findAllAsync()

但是,要使网站有效,至少其中一个级别必须具有非空 floorplan_url。我不确定是否有可以支持这一点的查询语法。如果有人可以让我知道这是否可行,那就太好了 - 否则我会采用解决方法。

【问题讨论】:

    标签: android realm realm-mobile-platform realm-list


    【解决方案1】:

    你试过了吗

    realm.where(SiteInfo::class.java)
         .isNotEmpty("levels")
         .isNotNull("levels.floorplan_url")        
         .findAllAsync()
    

    ?

    【讨论】:

    • 这行得通。谢谢。我不知道你可以参考这样的列表。
    • 幸运的是,链接查询完全符合if there is at least one of where ___ is true :D
    • 哦,是的,如果您使用 Realm 4.3.1+,那么您可以使用 import io.realm.kotlin.where 并且您可以说 realm.where&lt;SiteInfo&gt;().etc
    猜你喜欢
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 2021-09-27
    • 2019-03-22
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多