typeorm 一對多查詢

一對多查詢

一對多關系描述
  1. 一對多關系允許在 Entity1 可以擁有 Entity2 的多個實例時創(chuàng)建關系類型舀寓。
  2. Entity2 只有一個 Entity1胆数。Entity2 是關系的所有者,并在其自身存儲 Entity1 主鍵列的值互墓。
  3. 兩張表之間存在一對多關系必尼,那么反之就是多對一的關系

相關注解說明

  1. @OneToMany 注解

    // 源碼內容
    export declare function OneToMany<T>(typeFunctionOrTarget: string | ((type?: any) => ObjectType<T>), inverseSide: string | ((object: T) => any), options?: RelationOptions): PropertyDecorator;
    改在
    

    接收三個參數:

    ? typeFunctionOrTarget:關聯(lián)查詢的目標類型,即副表類篡撵,字符串類型或者一個返回目標類型的函數判莉,必填

    ? inverseSide: 副表實體類中關聯(lián)主表的實體類屬性,字符串類型或者一個返回目標類型的函數

    ? options:用于配置關聯(lián)關系

  2. @ManyToOne 注解

    參數同上育谬,主要說明如下:

    這里的 typeFunctionOrTarget 就是 One 所指的實體類券盅,相應的就是主表類

    inverseSide 就是主表實體類上定義的副表(即當前表)的屬性,也是函數

  3. @JoinColumn 注解

    用于標注在一對一或者多對一的關系中配置關聯(lián)關系膛檀,參數格式

    export interface JoinColumnOptions {
        // 主表中的主鍵列所對應的該表中的關聯(lián)的列的列名稱
        name?: string;
        // 引用此列的實體中的列的名稱
        referencedColumnName?: string;
    }
    
    

User 實體類

import { Column, Entity, OneToMany, PrimaryColumn } from "typeorm";
import { Article } from "./article.entity";

@Entity('user')
export class User {
  @PrimaryColumn()
  id: string;

  @Column()
  nickname: string;

  @Column()
  username: string;

  @Column()
  password: string;

  @Column()
  avator: string;

  @Column()
  email: string;

  @OneToMany((type) => Article, (article) => article.user)
  articles: Article[];
}

備注:一對多的關系中锰镀,需要給主表的實體類設置一個副表關聯(lián)的實體類屬性娘侍,并通過 @OneToMany 進行注解,

Article 實體類

import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn } from "typeorm";
import { User } from "./user.entity";

@Entity('article')
export class Article {
  @PrimaryColumn()
  id: string;

  @Column()
  title: string;

  @Column()
  link: string;

  @Column()
  fileId: string;

  @Column('text')
  content: string;

  @Column()
  categoryId: string;

  @Column()
  formatId: number;

  @Column()
  originId: number;

  @Column()
  createBy: string;

  @ManyToOne((type) => User, (user) => user.articles)
  @JoinColumn({ name: 'createBy' })
  user: User;
}

鏈接關系

User.id === Article.createBy

服務

import { Injectable } from "@nestjs/common";
import { InjectRepository } from "@nestjs/typeorm";
import { Article } from "../../entities/article.entity";
import { Attachment } from "../../entities/attachment.entity";
import { Repository } from "typeorm";
import { User } from "../../entities/user.entity";

@Injectable()
export class UserService {
  constructor(@InjectRepository(User) private readonly userRepository: Repository<User>){}

  // 一對多查詢
  getUserOfArticle () {
    return this.userRepository.find({
      relations: ['articles']
    })
  }
}

查詢結果

[
    {
        "id": "16ffe4f0-98d0-11ea-adcb-cd4aa44d4464",
        "nickname": "李云龍",
        "username": "wanghailong",
        "password": "1bbd886460827015e5d605ed44252251",
        "avator": "http://192.168.1.101:8765/avator/f360e610-9d80-11ea-9008-019523360f5b.jpg",
        "email": "59652111558733@qq.com",
        "articles": [
            {
                "id": "0fcb8310-9c4a-11ea-9427-017d0539b705",
                "title": "fe'f",
                "link": null,
                "fileId": null,
                "content": "<p>微任務</p>",
                "categoryId": "4b958080-9a33-11ea-9abc-1d8c64f552b3",
                "formatId": 2,
                "originId": 1,
                "createBy": "16ffe4f0-98d0-11ea-adcb-cd4aa44d4464"
            },
             {
                "id": "11dbc240-9c46-11ea-9427-017d0539b705",
                "title": "antd design",
                "link": "https://www.antdv.com/components/form-cn/",
                "fileId": null,
                "content": null,
                "categoryId": "b8504210-99fb-11ea-ac42-a10a286651a2",
                "formatId": 3,
                "originId": 3,
                "createBy": "16ffe4f0-98d0-11ea-adcb-cd4aa44d4464"
            }
        ]
    }
]
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末泳炉,一起剝皮案震驚了整個濱河市憾筏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌花鹅,老刑警劉巖氧腰,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異翠胰,居然都是意外死亡容贝,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門之景,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斤富,“玉大人,你說我怎么就攤上這事锻狗÷Γ” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵轻纪,是天一觀的道長油额。 經常有香客問我,道長刻帚,這世上最難降的妖魔是什么潦嘶? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮崇众,結果婚禮上掂僵,老公的妹妹穿的比我還像新娘。我一直安慰自己顷歌,他們只是感情好锰蓬,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著眯漩,像睡著了一般芹扭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赦抖,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天舱卡,我揣著相機與錄音,去河邊找鬼摹芙。 笑死灼狰,一個胖子當著我的面吹牛,可吹牛的內容都是我干的浮禾。 我是一名探鬼主播交胚,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盈电!你這毒婦竟也來了蝴簇?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤匆帚,失蹤者是張志新(化名)和其女友劉穎熬词,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體吸重,經...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡互拾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嚎幸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颜矿。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嫉晶,靈堂內的尸體忽然破棺而出骑疆,到底是詐尸還是另有隱情,我是刑警寧澤替废,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布箍铭,位于F島的核電站,受9級特大地震影響椎镣,放射性物質發(fā)生泄漏诈火。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一状答、第九天 我趴在偏房一處隱蔽的房頂上張望冷守。 院中可真熱鬧,春花似錦剪况、人聲如沸教沾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽授翻。三九已至,卻和暖如春孙咪,著一層夾襖步出監(jiān)牢的瞬間堪唐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工翎蹈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留淮菠,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓荤堪,卻偏偏與公主長得像合陵,于是被迫代替她去往敵國和親枢赔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內容