TypeORM:按关系列查找记录
在 TypeORM 中,您可以使用如下查询构建器根据关系列(在相关表中)选择表中的行:
const postRepository = myDataSource.getRepository(Post);
const posts = await postRepository
.createQueryBuilder('post')
.innerJoinAndSelect('post.user', 'user')
.where('user.age > :age', { age: 45 })
.getMany();
console.log(posts);
上面的代码片段检索年龄大于 45 岁的任何用户创建的所有帖子。
为了更清楚,您可以在下面看到User实体和Post实体。
用户实体:
// KindaCode.com
// User entity
import {
Entity,
PrimaryGeneratedColumn,
Column,
OneToMany,
Unique,
} from 'typeorm';
import { Post } from './Post.entity';
@Entity({ name: 'users' })
@Unique(['email'])
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
email: string;
@Column({ nullable: true })
age: number;
@OneToMany((type) => Post, (post) => post.user)
posts: Post[];
}
发布实体:
// KindaCode.com Example
// Post entity
import { Entity, Column, PrimaryGeneratedColumn, ManyToOne } from 'typeorm';
import { User } from './User.entity';
@Entity({name: 'posts'})
export class Post {
@PrimaryGeneratedColumn()
id: number;
@ManyToOne((type) => User, (user) => user.posts, { cascade: true })
user: User;
@Column()
title: string;
@Column()
body: string;
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。