我正在使用Typeorm@0.2.5MySql 驱动程序。
我有一个实体,MyEntity,它与另一个实体 , 具有多对多关系RelEntity。因此,Typeorm 生成 PK 的数据透视表以创建关系。
我的问题来自需要MyEntity使用RelEntity.prop = mySearchKey.
我不确定这是因为我缺少一些文档还是没有完全理解如何使用 Typeorm 来构建这个查询。
我相信我的 SQL 语句如下所示:
SELECT m.* FROM my_entity_table m
LEFT JOIN my_rel_pivot_table mrp ON mrp.my_entity_id = m.id
LEFT JOIN rel_entity_table r ON r.id = mrp.rel_entity_id
WHERE r.id = {MY_VALUE_HERE}
Run Code Online (Sandbox Code Playgroud)
但是,我不太确定如何将其转换为 Typeorm 查询。
我试过了:
this.entityRepo.find({
where: {
rel: myValue
}
});
Run Code Online (Sandbox Code Playgroud)
我也试过:
this.entityRepo.find({
where: {
rel: { id: myValue}
}
});
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
Unknown column 'MyEntity.myEntityId' in 'where clause'
有没有人以前遇到过这个问题,或者知道如何解决这个问题?
我已经在我的文章和类别(多对多)之间为我工作了。
要获取来自特定类别的文章:
this
.entityRepo
.createQueryBuilder('article')
.innerJoin(
'article.categories',
'category',
'category.id = :categoryId',
{ categoryId: XXX }
).getMany();
Run Code Online (Sandbox Code Playgroud)
XXX是具体类别的id。
希望它能帮助你。
在 GitHub 上寻求帮助后,以下问题的答案是使用 QueryBuilder API。
可以这样做:
const myEntities = await this.entityRepo.createQueryBuilder("entity")
.leftJoin("relEntity", "relEntity.id = :myId", {myId: myValue})
.getMany()
Run Code Online (Sandbox Code Playgroud)
非常感谢https://github.com/pleerock帮助我解决这个问题。
| 归档时间: |
|
| 查看次数: |
15150 次 |
| 最近记录: |