创建表
一对多表
自己本表 对应 其他表多条数据
import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from "typeorm";
import { Content } from "./typeorm.entity";
@Entity('content_2')
export class UserEntity {
@PrimaryGeneratedColumn()
id: number
@Column()
name: string
// 本表一个 查询 content表多个
@OneToMany(() => Content, content => content.user)
content: Content[]// 一个查多个肯定是数组
}
多对一表
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from "typeorm";
import { UserEntity } from "./user.entity";
@Entity('content_1')
export class Content {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string
// 本表多个 查询 user表一个
@ManyToOne(() => UserEntity, user => user.content)
user: UserEntity
}
查询数据
查询一对多
return await getRepository(UserEntity)
.createQueryBuilder('user')
.leftJoinAndSelect('user.content','content') //1.要加载的关系 ,2.关系表别名
.where('user.name = :name',{name:22})
.getMany()
// 查询到的数据
{
"code": 2000,
"message": "请求成功!",
"time": "2021-03-21T05:07:21.843Z",
"data": [
{
"id": 2,
"name": "22",
"content": [ // 关联的content必定是数组,存放多条数据
{
"id": 1,
"name": "111"
},
{
"id": 2,
"name": "222"
}
]
}
]
}
查询多对一
本表多条数据对应其他表一条数据
return await getRepository(Content)
.createQueryBuilder('content')
.leftJoinAndSelect('content.user','user')
.where('content.name = :name',{name:111})
.getMany()
// 查询到的数据
{
"code": 2000,
"message": "请求成功!",
"time": "2021-03-21T05:09:18.509Z",
"data": [
{
"id": 1,
"name": "111",
"user": { // 对应的一条数据
"id": 2,
"name": "22"
}
}
]
}
疑惑
多对一表中的userid 是如何设置呢?动态填写参数?还是存储数据时候直接写死?如果小伙伴看到可以帮我解下疑惑,谢谢~~