3 способа многие ко многим typeOrm - PullRequest
0 голосов
/ 29 апреля 2020

Есть ли способ реализовать трехстороннее отношение "многие ко многим" в typeOrm

Пример трехстороннего отношения "многие ко многим" будет выглядеть следующим образом:

3 Отношение ко многим ко многим

1 Ответ

0 голосов
/ 29 апреля 2020

я нашел решение для этого; на самом деле это написано в документации typorm https://github.com/typeorm/typeorm/blob/master/docs/many-to-many-relations.md#many-ко-многим-отношениям-с-пользовательскими-свойствами

отношений ко-многим-со-многими с пользовательскими свойствами На случай, если вам понадобятся дополнительные свойства для ваших отношений многих ко многим, вы должны создать новую сущность самостоятельно. Например, если вы хотите, чтобы сущности Post и Category имели отношение «многие ко многим» с дополнительным столбцом заказа, необходимо создать сущность PostToCategory с двумя отношениями ManyToOne, указывающими в обоих направлениях, и настраиваемыми столбцами в ней:

import { Entity, Column, ManyToOne, PrimaryGeneratedColumn } from "typeorm";
import { Post } from "./post";
import { Category } from "./category";

@Entity()
export class PostToCategory {
@PrimaryGeneratedColumn()
public postToCategoryId!: number;

@Column()
public postId!: number;

@Column()
public categoryId!: number;

@Column()
public order!: number;

@ManyToOne(type => Post, post => post.postToCategories)
public post!: Post;

@ManyToOne(type => Category, category => category.postToCategories)
public category!: Category;
}

Кроме того, вам нужно добавить отношения типа «Пост» и «Категория»:

// category.ts
...
@OneToMany(type => PostToCategory, postToCategory => postToCategory.category)
public postToCategories!: PostToCategory[];

// post.ts
...
@OneToMany(type => PostToCategory, postToCategory => postToCategory.post)
public postToCategories!: PostToCategory[];
...