vaflya
@vaflya
Ничего личного, это всего лишь хобби.

Как сделать в TypeORM, отношения OneToOne без изменений в структуру БД?

Добрый день! Есть БД (права только на чтение). Описываю сущности 2-х таблиц.
1 -User.entity.ts
Список пользователей

import { Entity, PrimaryColumn, Column, Timestamp, OneToOne, JoinColumn } from 'typeorm';
import ModelHasRoles from './modelHasRoles.entity';

@Entity({
    name: 'user'
})
export default class User {
    @PrimaryColumn({
        type: 'integer'
    })
    id: number;

    @OneToOne(() => ModelHasRoles, role => role.modelId)
    role: ModelHasRoles
    ....
}


2- ModelHasRoles.entity.ts
Там написана роль для каждого пользователя

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

@Entity({
    name: 'model_has_roles'
})
export default class ModelHasRoles {
    @PrimaryColumn({
        name: 'role_id',
        type: 'integer'
    })
    roleId: number;

    @OneToOne(() => User, user => user.id)
    user: User;

    @Column({
        name: 'model_type',
        type: 'varchar',
        length: 255
    })
    modelType: string;

    @Column({
        name: 'model_id',
        type: 'bigint'
    })
    modelId: number;
}


User.id == ModelHasRole.modelId


Не могу выстроить отношение, чтобы когда получаешь строки из таблицы User, подтягивались поля из ModelHasRole.
  • Вопрос задан
  • 558 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы