Aller au contenu principal

40-1 Ajouter une propriété utilisateur

Assumons qu'une issue peut être associée à un utilisateur comme un "responsable" de l'issue. Pour cela, dans une issue, il nous faut une propriété responsableId et responsable. Puis, dans l'entité utilisateur, une propriété issues.

  1. Modifier l'issue pour ajouter la propriété responsable

    src/issues/entities/issue.entity.ts
    @Entity('issues')
    export class Issue extends BaseEntity {
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    projetId: number;

    @ManyToOne(() => Projet, (projet) => projet.issues, { onDelete: 'CASCADE' })
    projet: Projet;

    responsable: Utilisateur;

    //...
  2. Modifier l'entité utilisateur pour y ajouter une propriété issues

    src/utilisateurs/entities/utilisateur.entity.ts
    @Entity('utilisateurs')
    export class Utilisateur extends BaseEntity {
    @PrimaryGeneratedColumn()
    id: number;

    @Column({ type: 'varchar', length: 255 })
    prenom: string;

    @Column({ type: 'varchar', length: 255 })
    nom: string;

    @Column({ unique: true, type: 'varchar', length: 255 })
    courriel: string;

    @Column({ unique: true, type: 'varchar', length: 32 })
    nomUtilisateur: string;

    @Column({ type: 'varchar', length: 255 })
    @Exclude()
    password: string;

    issues: Issue[];
  3. Établir la relation OneToMany et ManyToOne en plus de préciser le nom de la colonne servant de clé étrangère dans Issue

    src/issues/entities/issue.entity.ts
    //...

    @ManyToOne(() => Utilisateur, (utilisateur) => utilisateur.issues)
    @JoinColumn({ name: 'responsable_id' })
    responsable: Utilisateur;

    //...
    src/utilisateurs/entities/utilisateur.entity.ts
    //...

    @OneToMany(() => Issue, (issue) => issue.responsable)
    issues: Issue[];

    //...

Le tout devrait avoir créé dans la bd la colonne responsable_id dans la table issues.

Imgur