ビューエンティティはサポートされていません。これは、あなたが求めているものとほぼ同じです-ここで購読できます:
https://github.com/mikro-orm/mikro-orm/issues/672
クエリビルダーを介して必要なクエリを実行 (または生の SQL を直接実行) し、以下を介して POJO として結果を取得できますqb.execute()
。
const res = await em.createQueryBuilder(User, 'u')
.select(['u.id', 'u.username', 'count(p.id) as count'])
.leftJoin('u.posts', 'p')
.groupBy('u.id')
.execute();
または、User
エンティティとしてqb.getResult()
. このアプローチでは、QB 結果をマップできる非永続プロパティも定義する必要があります。この場合はcount
.
@Entity()
class User {
@Property({ persist: false })
count?: number;
}
const users = await em.createQueryBuilder(User, 'u')
.select(['u.id', 'u.username', 'count(p.id) as count'])
.leftJoin('u.posts', 'p')
.groupBy('u.id')
.getResult();
v4 では@Filter()
、これにも使用できます。ここでは、カウントを提供するサブクエリを定義できます。
https://github.com/mikro-orm/mikro-orm/blob/dev/docs/docs/defining-entities.md#formulas