sách gpt4 ai đã đi

android - SQLDelight 关系

In lại 作者:行者123 更新时间:2023-12-04 23:46:58 30 4
mua khóa gpt4 Nike

我想用 SQLDelight 建模关系,尤其是 一对多关系。
我有 2 张 table :recipeingredient .为简单起见,它们看起来像这样:

CREATE TABLE recipe (
id INTEGER NOT NULL PRIMARY KEY,
name TEXT NOT NULL
)

CREATE TABLE ingredient (
recipe_id INTEGER NOT NULL,
name TEXT NOT NULL,
FOREIGN KEY (recipe_id) REFERENCES recipe(id) ON DELETE CASCADE
);
所以我有一个食谱列表,每个食谱可以包含 0-n 个成分。
我有两个目标:
  • 写一个包含所有成分的食谱
  • 阅读包含所有成分的食谱

  • 我很确定第一个只能手动完成,例如插入配方,然后手动插入相关成分。
    对于后者,我尝试使用以下语句加入表:
    selectWithIngredients:
    LỰA CHỌN *
    FROM recipe
    INNER JOIN ingredient ON recipe.id = ingredient.recipe_id
    WHERE recipe.id=?;
    SQLDelight 为我生成了一个 1:1 的关系文件:
    public data class SelectWithIngredients(
    public val id: Long,
    public val name: String,
    public val recipe_id: Long,
    public val name_: String,
    )
    有没有什么好的方法可以用一个生成的函数来检索数据(配方 + 成分列表)?类似于 Rooms 的东西 @Embedded@Relation注释。

    1 Câu trả lời

    不幸的是,SQLDelight 没有那么精致。它所做的只是为查询的每一行提供一个数据类,如果你想做更复杂的逻辑,比如将一个表映射到另一个表的列表,而不是你需要在 kotlin 中自己做。
    例如。有这样的食谱

    data class Recipe(val name: String, val ingredients: List)
    你可以用你的选择来做到这一点
    val rows: List 

    rows.groupBy { it.name }
    .map { (recipe, selectRows) ->
    Recipe(name, selectRows.map { it.name_ }
    }

    关于android - SQLDelight 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68632268/

    30 4 0
    行者123
    Hồ sơ cá nhân

    Tôi là một lập trình viên xuất sắc, rất giỏi!

    Nhận phiếu giảm giá Didi Taxi miễn phí
    Mã giảm giá Didi Taxi
    Giấy chứng nhận ICP Bắc Kinh số 000000
    Hợp tác quảng cáo: 1813099741@qq.com 6ren.com