按类型获取 Objection.js 中的帖子?
Fetch posts by types in Objection.js?
所以我有一个 posts table 和一个类型 table。每个 post 可以有多种类型。我在 post 模型中创建了一个 HasManyRelation 关系。不,我希望获得所有 post 的 type_id 可能是 1 或 2 的东西。这是我试过的,
const posts = await UserPost.query()
.select("id", "description", "price", "created_at")
.eager("[user, category, images, types]")
.modifyEager("types", builder => {
builder.where("user_post_type.type_id", 1)
})
.limit(limit)
.orderBy("created_at", "desc");
这行不通。这只是过滤类型本身。但实际上 return post 不属于那种类型。我该怎么做?
eager 在查询之前进行获取 Post 并在查询之后为您在 .eager()
的参数中写入每个 eager。
如果你想按类型过滤 Post,你必须连接表,并使用 .where()
添加条件。这是第一个想到的例子:
const posts = await UserPost.query()
.select("id", "description", "price", "created_at")
.leftJoin('types')
.eager("[user, category, images]")
.where('types.type_id', 1) // Condition
.limit(limit)
.orderBy("created_at", "desc");
如果您想查看其他示例,这是 link for documentation
所以我有一个 posts table 和一个类型 table。每个 post 可以有多种类型。我在 post 模型中创建了一个 HasManyRelation 关系。不,我希望获得所有 post 的 type_id 可能是 1 或 2 的东西。这是我试过的,
const posts = await UserPost.query()
.select("id", "description", "price", "created_at")
.eager("[user, category, images, types]")
.modifyEager("types", builder => {
builder.where("user_post_type.type_id", 1)
})
.limit(limit)
.orderBy("created_at", "desc");
这行不通。这只是过滤类型本身。但实际上 return post 不属于那种类型。我该怎么做?
eager 在查询之前进行获取 Post 并在查询之后为您在 .eager()
的参数中写入每个 eager。
如果你想按类型过滤 Post,你必须连接表,并使用 .where()
添加条件。这是第一个想到的例子:
const posts = await UserPost.query()
.select("id", "description", "price", "created_at")
.leftJoin('types')
.eager("[user, category, images]")
.where('types.type_id', 1) // Condition
.limit(limit)
.orderBy("created_at", "desc");
如果您想查看其他示例,这是 link for documentation