Mysql 多对多关系自定义表字段
我正在一个已经存在的数据库上使用typeorm。 我有三张桌子Mysql 多对多关系自定义表字段,mysql,node.js,typescript,typeorm,Mysql,Node.js,Typescript,Typeorm,我正在一个已经存在的数据库上使用typeorm。 我有三张桌子 +-------------+--------------+----------------------------+ | ROLE | +-------------+--------------+----------------------------+ | r_id | int(11) | PRIMARY
+-------------+--------------+----------------------------+
| ROLE |
+-------------+--------------+----------------------------+
| r_id | int(11) | PRIMARY KEY AUTO_INCREMENT |
| r_name | varchar(50) | |
| r_status | tinyint | |
+-------------+--------------+----------------------------+
+-------------+--------------+----------------------------+
| PERMISSION |
+-------------+--------------+----------------------------+
| p_id | int(11) | PRIMARY KEY AUTO_INCREMENT |
| p_name | varchar(50) | |
+-------------+--------------+----------------------------+
+-------------+--------------+----------------------------+
| PERMISSION_ROLE |
+-------------+--------------+----------------------------+
| p_id | int(11) | PRIMARY KEY FOREIGN KEY |
| r_id | int(11) | PRIMARY KEY FOREIGN KEY |
+-------------+--------------+----------------------------+
我用打字机写了这些实体
-角色
- 许可
- 权限\角色
permissionRepository.find({ relations: ["permission_role"] })
@Entity({ name: "ROLE" })
export class Role {
@PrimaryGeneratedColumn()
public r_id: Number;
@Column()
public r_nome_ruolo: string;
@Column()
public r_stato: Boolean;
@ManyToMany(() => Permission, (permission) => permission.roles)
@JoinTable({
name: "PERMISSION_ROLE",
joinColumn: {
name: "r_id",
referencedColumnName: "r_id",
},
inverseJoinColumn: {
name: "p_id",
referencedColumnName: "p_id",
},
})
permissions: Permission[];
}
或
我在结果中收到了角色的权限,但具有空数组
提前感谢大家的帮助解决
我修改了实体角色和权限,如下所示:
permissionRepository.find({ relations: ["permission_role"] })
@Entity({ name: "ROLE" })
export class Role {
@PrimaryGeneratedColumn()
public r_id: Number;
@Column()
public r_nome_ruolo: string;
@Column()
public r_stato: Boolean;
@ManyToMany(() => Permission, (permission) => permission.roles)
@JoinTable({
name: "PERMISSION_ROLE",
joinColumn: {
name: "r_id",
referencedColumnName: "r_id",
},
inverseJoinColumn: {
name: "p_id",
referencedColumnName: "p_id",
},
})
permissions: Permission[];
}
解决
我修改了实体角色和权限,如下所示:
permissionRepository.find({ relations: ["permission_role"] })
@Entity({ name: "ROLE" })
export class Role {
@PrimaryGeneratedColumn()
public r_id: Number;
@Column()
public r_nome_ruolo: string;
@Column()
public r_stato: Boolean;
@ManyToMany(() => Permission, (permission) => permission.roles)
@JoinTable({
name: "PERMISSION_ROLE",
joinColumn: {
name: "r_id",
referencedColumnName: "r_id",
},
inverseJoinColumn: {
name: "p_id",
referencedColumnName: "p_id",
},
})
permissions: Permission[];
}
@Entity({ name: "PERRMISSION" })
export class Permission {
@PrimaryGeneratedColumn()
public p_id: Number;
@Column()
public p_nome_permesso: string;
@ManyToMany(() => Role, (role) => role.permissions)
public roles: Role[];
}