当前位置: 首页 > news >正文

建设网站域名备案查询网站推广维护

建设网站域名备案查询,网站推广维护,最好免费观看高清播放,关于做网站电话销售在使用 ORM(如 TypeORM)进行实体关系设计时,OneToMany 和 ManyToOne 是非常重要的注解,常用来表示两个实体之间的一对多关系。下面通过例子详细说明它们的使用场景和工作方式。 OneToMany 和 ManyToOne 的基本概念 ManyToOne 表示…

在使用 ORM(如 TypeORM)进行实体关系设计时,@OneToMany@ManyToOne 是非常重要的注解,常用来表示两个实体之间的一对多关系。下面通过例子详细说明它们的使用场景和工作方式。


@OneToMany@ManyToOne 的基本概念

  1. @ManyToOne
    表示 “多” 的一方指向 “一” 的一方。它总是定义在关系的 “多” 一侧。

    • 数据库中通常对应一个外键列。
    • 该装饰器是关系的拥有方,负责维护外键。
  2. @OneToMany
    表示 “一” 的一方指向 “多” 的一方。它总是定义在关系的 “一” 一侧。

    • 数据库中没有直接对应的列,而是反向映射。
    • 必须与 @ManyToOne 配合使用,不能单独存在。

示例:用户与文章的关系

场景:

  • 一个用户可以拥有多篇文章。
  • 每篇文章属于一个用户。
1. 实体设计
User 实体
import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from 'typeorm';
import { Article } from './article.entity';@Entity()
export class User {@PrimaryGeneratedColumn()id: number;@Column()name: string;// 一个用户拥有多篇文章@OneToMany(() => Article, (article) => article.author)articles: Article[];
}
Article 实体
import { Entity, PrimaryGeneratedColumn, Column, ManyToOne } from 'typeorm';
import { User } from './user.entity';@Entity()
export class Article {@PrimaryGeneratedColumn()id: number;@Column()title: string;@ManyToOne(() => User, (user) => user.articles, { onDelete: 'CASCADE' })author: User; // 每篇文章属于一个用户
}

2. 数据库结构

根据上述实体,TypeORM 将生成以下表结构:

User

idname
1Alice
2Bob

Article

idtitleauthorId
1First Post1
2Second Post1
3Third Post2

3. 插入数据
创建用户和文章
const userRepository = dataSource.getRepository(User);
const articleRepository = dataSource.getRepository(Article);// 创建用户
const user = userRepository.create({ name: 'Alice' });
await userRepository.save(user);// 创建文章
const article1 = articleRepository.create({ title: 'First Post', author: user });
const article2 = articleRepository.create({ title: 'Second Post', author: user });
await articleRepository.save([article1, article2]);

4. 查询数据
查询用户的文章
const userWithArticles = await userRepository.findOne({where: { id: 1 },relations: ['articles'],
});console.log(userWithArticles);

输出:

{"id": 1,"name": "Alice","articles": [{ "id": 1, "title": "First Post" },{ "id": 2, "title": "Second Post" }]
}
查询文章及其作者
const articleWithAuthor = await articleRepository.findOne({where: { id: 1 },relations: ['author'],
});console.log(articleWithAuthor);

输出:

{"id": 1,"title": "First Post","author": { "id": 1, "name": "Alice" }
}

关键点总结

  1. @ManyToOne 是外键的维护者

    • 它在数据库中定义外键列(如 authorId)。
    • 用于指向关系的 “一” 侧。
  2. @OneToMany 是关系的反向映射

    • 它没有单独的数据库列。
    • 它仅用作 @ManyToOne 的反向映射,表示 “一” 侧可以访问所有 “多” 侧的记录。
  3. relations 必须手动加载

    • TypeORM 默认不会加载关联字段,需在查询时指定 relations
  4. cascade 选项

    • cascade: true 允许保存或删除时级联操作(如在保存用户时自动保存其文章)。

http://www.yayakq.cn/news/964316/

相关文章:

  • 广东网站设计与建设旅游景点介绍网页设计模板
  • 昊杰南宫网站建设海南门户网站开发公司
  • 软件开发设计制作网站下载西安做网站 好运网络
  • 网站换域名做网站要求的分辨率是什么意思
  • 广东建设工程交易中心网站巴基斯坦外贸平台
  • 高质量视频素材网站电影网站织梦模版
  • 松江做网站费用二元期权网站建设
  • 多肉建设网站前的市场分析万远翔网站建设
  • 网站备案模板wordpress批量上传商品
  • 网站后台默认用户名cms监控手机客户端
  • 建筑业资质查询网站wordpress 回复显示不出来
  • 给千图网等网站做设计赚钱吗昆明网站建设开发制作
  • 官网招聘和招聘网站宁波seo网络推广软件系统
  • 雅茂道网站建设wordpress在线支付插件
  • 网站如何在百度上做推广方案网站流程图设计
  • 我想找网站帮忙做宣传最好的网站模板网站
  • html网站支付链接怎么做建站平台 phpwind
  • 霸州住房和城乡建设厅网站趣味网页制作
  • 网站后台程序下载企业微信怎么下载
  • stm32做网站服务器wordpress调取数据库
  • 0基础12天精通网站建设语言网站建设
  • 个人能为公司网站备案吗北京网站建设华网天下科技公司
  • 网站划分栏目企业门户网站包括
  • wordpress网站密码浙江今天的新消息
  • 网站名称要求终身免费vps
  • 南京建设信息网站网站制作实验报告
  • 深圳建站科技有限公司烟台元和网络科技有限公司
  • 开源门户网站cms网站平台都有哪些
  • 谷歌搜索关键字网站百度seo正规优化
  • 响应式网站怎么做品牌推广的渠道有哪些