繁体   English   中英

TypeORM 与除 id 之外的字段的关系

[英]TypeORM relation with a field apart from id

我想在 TypeORM 中使用 id 以外的字段创建一对多关系,通常的关系看起来像这样,但在同一个例子中,假设User表的列name也是唯一的,现在我想在关系中引用它,然后 photos 中的外键将包含name的值,并在Photos表中给它一个不同于userId的列名称,例如userName ,我将如何做到这一点,我被卡住了,坦率地说不知道如何进行。

@Entity()
export class Photo {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    url: string;

    @ManyToOne(() => User, user => user.photos)
    @JoinColumn({ name: 'userName' }) // < -- add this line
    user: User;

}


@Entity()
export class User {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    name: string;

    @OneToMany(() => Photo, photo => photo.user)
    photos: Photo[];
}

备查

如果您希望您的关系指向id以外的列,则必须将referencedColumnName: '<column name here>'添加到您的@JoinColumn()选项。

例如:

@Entity()
export class Photo {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    url: string;

    @ManyToOne(() => User, user => user.photos)
    @JoinColumn({ name: 'userName', referencedColumnName: 'name' })
    user: User;

}

此外,请注意从 typeORM 的角度指定 referencedColumnName,而不是真正的底层驱动程序列名称。 例如,如果你想引用一个名为user_name的列,但你的实体的属性使用 camelCase userName ,你必须指定:

referencedColumnName: 'userName'

如果您改为指定数据库列名,您将收到错误消息,抱怨 typeORM 无法在您的实体定义中找到引用的列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM